From 9155ca37e59e3523108cfd7215b1ea0a2691c8f5 Mon Sep 17 00:00:00 2001
From: foreman
Date: Thu, 13 Apr 2017 13:56:38 -0400
Subject: [PATCH] P4 to Git Change 1398097 by lmoriche@lmoriche_opencl_dev2 on
2017/04/13 13:01:56
SWDEV-102733 - [OCL-LC-ROCm] Cmake build Write CMakeLists.txt to enable building with and without the DK environment
- Change the coding convention of the runtime files. Use Google's Style (https://google.github.io/styleguide/cppguide.html).
Affected files ...
... //depot/stg/opencl/drivers/opencl/.clang-format#1 add
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_agent_amd.h#2 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_command.cpp#13 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_context.cpp#53 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_counter.cpp#2 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_d3d10.cpp#15 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_d3d11.cpp#22 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_d3d9.cpp#32 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_debugger_amd.cpp#8 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_debugger_amd.h#7 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_device.cpp#61 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_event.cpp#10 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_execute.cpp#23 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_gl.cpp#53 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_icd.cpp#27 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_icd_amd.h#18 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_kernel.h#24 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_kernel_info_amd.cpp#3 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_kernel_info_amd.h#4 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_lqdflash_amd.cpp#17 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_lqdflash_amd.h#6 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_memobj.cpp#81 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_object.cpp#3 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_pipe.cpp#6 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_platform_amd.cpp#2 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_platform_amd.h#2 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_profile_amd.cpp#3 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_profile_amd.h#2 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_program.cpp#41 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_sampler.cpp#6 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_sdi_amd.cpp#3 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_sdi_amd.h#2 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_semaphore_amd.h#3 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_svm.cpp#20 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_thread_trace_amd.cpp#8 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_thread_trace_amd.h#4 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/appprofile.cpp#17 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/appprofile.hpp#12 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/blit.cpp#4 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/blit.hpp#4 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/blitcl.cpp#11 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpubinary.cpp#11 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpubinary.hpp#4 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpubuiltins.cpp#13 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpubuiltins.hpp#4 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpucommand.cpp#66 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpucommand.hpp#40 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpudevice.cpp#280 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpudevice.hpp#96 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpufeat.hpp#3 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpukernel.hpp#8 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpumapping.cpp#6 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpumapping.hpp#4 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpuprogram.cpp#70 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpuprogram.hpp#14 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpusettings.cpp#33 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpusettings.hpp#2 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cputables.hpp#5 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpuvirtual.cpp#26 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpuvirtual.hpp#13 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/device.cpp#209 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/device.hpp#284 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuappprofile.cpp#12 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuappprofile.hpp#7 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpubinary.cpp#58 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpubinary.hpp#27 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpublit.cpp#126 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpublit.hpp#41 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpucompiler.cpp#156 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuconstbuf.cpp#10 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuconstbuf.hpp#7 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpucounters.cpp#12 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpucounters.hpp#9 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpudebugger.hpp#7 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpudebugmanager.cpp#10 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpudebugmanager.hpp#6 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpudefs.hpp#147 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpudevice.cpp#567 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpudevice.hpp#163 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpukernel.cpp#318 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpukernel.hpp#126 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpumemory.cpp#131 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpumemory.hpp#50 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuprintf.cpp#44 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuprintf.hpp#15 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuprogram.cpp#232 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuprogram.hpp#69 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuresource.cpp#238 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuresource.hpp#87 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpusched.hpp#19 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuschedcl.cpp#35 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuscsi.cpp#37 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpusettings.cpp#350 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpusettings.hpp#98 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gputhreadtrace.cpp#9 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gputhreadtrace.hpp#7 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gputimestamp.cpp#27 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gputimestamp.hpp#16 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gputrap.hpp#4 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuvirtual.cpp#410 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuvirtual.hpp#140 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuwavelimiter.cpp#13 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuwavelimiter.hpp#9 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/hwdebug.cpp#7 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/hwdebug.hpp#8 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palappprofile.cpp#2 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palappprofile.hpp#3 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palbinary.cpp#2 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palbinary.hpp#3 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palblit.cpp#13 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palblit.hpp#5 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palcompiler.cpp#15 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palconstbuf.cpp#2 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palconstbuf.hpp#3 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palcounters.cpp#11 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palcounters.hpp#9 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldebugger.hpp#3 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldebugmanager.cpp#2 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldebugmanager.hpp#3 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldefs.hpp#16 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldevice.cpp#45 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldevice.hpp#16 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldeviced3d10.cpp#2 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldeviced3d11.cpp#2 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldeviced3d9.cpp#2 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldevicegl.cpp#4 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palkernel.cpp#34 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palkernel.hpp#11 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palmemory.cpp#13 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palmemory.hpp#3 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palprintf.cpp#5 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palprintf.hpp#3 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palprogram.cpp#39 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palprogram.hpp#17 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palresource.cpp#28 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palresource.hpp#12 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palsched.hpp#3 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palschedcl.cpp#4 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palsettings.cpp#24 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palsettings.hpp#10 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palthreadtrace.cpp#3 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palthreadtrace.hpp#5 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paltimestamp.cpp#2 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paltimestamp.hpp#3 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paltrap.hpp#2 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palvirtual.cpp#48 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palvirtual.hpp#21 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palwavelimiter.cpp#3 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palwavelimiter.hpp#4 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/mesa_glinterop.h#4 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocappprofile.cpp#6 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocappprofile.hpp#4 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocbinary.hpp#4 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocblit.cpp#17 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocblit.hpp#8 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/roccompiler.cpp#32 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/roccompilerlib.cpp#6 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/roccompilerlib.hpp#5 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocdefs.hpp#10 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocdevice.cpp#48 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocdevice.hpp#20 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocglinterop.cpp#4 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocglinterop.hpp#4 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rockernel.cpp#22 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rockernel.hpp#16 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocmemory.cpp#15 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocmemory.hpp#8 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocprintf.cpp#7 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocprintf.hpp#5 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocprogram.cpp#64 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocprogram.hpp#23 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocregisters.hpp#4 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocsettings.cpp#17 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocsettings.hpp#8 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocvirtual.cpp#34 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocvirtual.hpp#10 edit
... //depot/stg/opencl/drivers/opencl/runtime/os/alloc.cpp#7 edit
... //depot/stg/opencl/drivers/opencl/runtime/os/alloc.hpp#4 edit
... //depot/stg/opencl/drivers/opencl/runtime/os/os.cpp#8 edit
... //depot/stg/opencl/drivers/opencl/runtime/os/os.hpp#30 edit
... //depot/stg/opencl/drivers/opencl/runtime/os/os_posix.cpp#42 edit
... //depot/stg/opencl/drivers/opencl/runtime/os/os_win32.cpp#47 edit
... //depot/stg/opencl/drivers/opencl/runtime/platform/agent.cpp#8 edit
... //depot/stg/opencl/drivers/opencl/runtime/platform/agent.hpp#6 edit
... //depot/stg/opencl/drivers/opencl/runtime/platform/command.cpp#78 edit
... //depot/stg/opencl/drivers/opencl/runtime/platform/command.hpp#83 edit
... //depot/stg/opencl/drivers/opencl/runtime/platform/commandqueue.cpp#23 edit
... //depot/stg/opencl/drivers/opencl/runtime/platform/commandqueue.hpp#18 edit
... //depot/stg/opencl/drivers/opencl/runtime/platform/context.cpp#42 edit
... //depot/stg/opencl/drivers/opencl/runtime/platform/context.hpp#26 edit
... //depot/stg/opencl/drivers/opencl/runtime/platform/counter.hpp#4 edit
... //depot/stg/opencl/drivers/opencl/runtime/platform/interop.hpp#12 edit
... //depot/stg/opencl/drivers/opencl/runtime/platform/kernel.cpp#23 edit
... //depot/stg/opencl/drivers/opencl/runtime/platform/kernel.hpp#18 edit
... //depot/stg/opencl/drivers/opencl/runtime/platform/memory.cpp#127 edit
... //depot/stg/opencl/drivers/opencl/runtime/platform/memory.hpp#100 edit
... //depot/stg/opencl/drivers/opencl/runtime/platform/ndrange.cpp#8 edit
... //depot/stg/opencl/drivers/opencl/runtime/platform/ndrange.hpp#9 edit
... //depot/stg/opencl/drivers/opencl/runtime/platform/object.cpp#2 edit
... //depot/stg/opencl/drivers/opencl/runtime/platform/object.hpp#17 edit
... //depot/stg/opencl/drivers/opencl/runtime/platform/perfctr.hpp#5 edit
... //depot/stg/opencl/drivers/opencl/runtime/platform/program.cpp#86 edit
... //depot/stg/opencl/drivers/opencl/runtime/platform/program.hpp#41 edit
... //depot/stg/opencl/drivers/opencl/runtime/platform/runtime.cpp#35 edit
... //depot/stg/opencl/drivers/opencl/runtime/platform/runtime.hpp#4 edit
... //depot/stg/opencl/drivers/opencl/runtime/platform/sampler.hpp#8 edit
... //depot/stg/opencl/drivers/opencl/runtime/platform/threadtrace.hpp#6 edit
... //depot/stg/opencl/drivers/opencl/runtime/thread/atomic.hpp#7 edit
... //depot/stg/opencl/drivers/opencl/runtime/thread/monitor.cpp#7 edit
... //depot/stg/opencl/drivers/opencl/runtime/thread/monitor.hpp#8 edit
... //depot/stg/opencl/drivers/opencl/runtime/thread/semaphore.cpp#10 edit
... //depot/stg/opencl/drivers/opencl/runtime/thread/semaphore.hpp#7 edit
... //depot/stg/opencl/drivers/opencl/runtime/thread/thread.cpp#14 edit
... //depot/stg/opencl/drivers/opencl/runtime/thread/thread.hpp#15 edit
... //depot/stg/opencl/drivers/opencl/runtime/top.hpp#26 edit
... //depot/stg/opencl/drivers/opencl/runtime/utils/concurrent.hpp#8 edit
... //depot/stg/opencl/drivers/opencl/runtime/utils/debug.cpp#5 edit
... //depot/stg/opencl/drivers/opencl/runtime/utils/debug.hpp#7 edit
... //depot/stg/opencl/drivers/opencl/runtime/utils/flags.cpp#16 edit
... //depot/stg/opencl/drivers/opencl/runtime/utils/flags.hpp#271 edit
... //depot/stg/opencl/drivers/opencl/runtime/utils/macros.hpp#8 edit
... //depot/stg/opencl/drivers/opencl/runtime/utils/util.hpp#12 edit
... //depot/stg/opencl/drivers/opencl/runtime/utils/versions.hpp#2150 edit
---
opencl/.clang-format | 10 +
opencl/api/opencl/amdocl/cl_agent_amd.h | 220 +-
opencl/api/opencl/amdocl/cl_command.cpp | 344 +-
opencl/api/opencl/amdocl/cl_context.cpp | 681 ++-
opencl/api/opencl/amdocl/cl_counter.cpp | 83 +-
opencl/api/opencl/amdocl/cl_d3d10.cpp | 2387 ++++----
opencl/api/opencl/amdocl/cl_d3d11.cpp | 2765 +++++----
opencl/api/opencl/amdocl/cl_d3d9.cpp | 1261 ++---
opencl/api/opencl/amdocl/cl_debugger_amd.cpp | 777 ++-
opencl/api/opencl/amdocl/cl_debugger_amd.h | 386 +-
opencl/api/opencl/amdocl/cl_device.cpp | 937 ++-
opencl/api/opencl/amdocl/cl_event.cpp | 241 +-
opencl/api/opencl/amdocl/cl_execute.cpp | 716 ++-
opencl/api/opencl/amdocl/cl_gl.cpp | 3358 ++++++-----
opencl/api/opencl/amdocl/cl_icd.cpp | 452 +-
opencl/api/opencl/amdocl/cl_icd_amd.h | 1478 ++---
opencl/api/opencl/amdocl/cl_kernel.h | 170 +-
.../api/opencl/amdocl/cl_kernel_info_amd.cpp | 115 +-
opencl/api/opencl/amdocl/cl_kernel_info_amd.h | 48 +-
opencl/api/opencl/amdocl/cl_lqdflash_amd.cpp | 479 +-
opencl/api/opencl/amdocl/cl_lqdflash_amd.h | 59 +-
opencl/api/opencl/amdocl/cl_memobj.cpp | 5016 ++++++++---------
opencl/api/opencl/amdocl/cl_object.cpp | 89 +-
opencl/api/opencl/amdocl/cl_pipe.cpp | 152 +-
opencl/api/opencl/amdocl/cl_platform_amd.cpp | 11 +-
opencl/api/opencl/amdocl/cl_platform_amd.h | 10 +-
opencl/api/opencl/amdocl/cl_profile_amd.cpp | 358 +-
opencl/api/opencl/amdocl/cl_profile_amd.h | 82 +-
opencl/api/opencl/amdocl/cl_program.cpp | 1571 +++---
opencl/api/opencl/amdocl/cl_sampler.cpp | 343 +-
opencl/api/opencl/amdocl/cl_sdi_amd.cpp | 418 +-
opencl/api/opencl/amdocl/cl_sdi_amd.h | 37 +-
opencl/api/opencl/amdocl/cl_semaphore_amd.h | 10 +-
opencl/api/opencl/amdocl/cl_svm.cpp | 1007 ++--
.../api/opencl/amdocl/cl_thread_trace_amd.cpp | 597 +-
.../api/opencl/amdocl/cl_thread_trace_amd.h | 350 +-
36 files changed, 12391 insertions(+), 14627 deletions(-)
create mode 100644 opencl/.clang-format
diff --git a/opencl/.clang-format b/opencl/.clang-format
new file mode 100644
index 0000000000..5572a72cdd
--- /dev/null
+++ b/opencl/.clang-format
@@ -0,0 +1,10 @@
+Language: Cpp
+BasedOnStyle: Google
+AlignEscapedNewlinesLeft: false
+AlignOperands: false
+ColumnLimit: 100
+AlwaysBreakTemplateDeclarations: false
+DerivePointerAlignment: false
+IndentFunctionDeclarationAfterType: false
+MaxEmptyLinesToKeep: 2
+SortIncludes: false
diff --git a/opencl/api/opencl/amdocl/cl_agent_amd.h b/opencl/api/opencl/amdocl/cl_agent_amd.h
index 7967750df9..ede63cfa0a 100644
--- a/opencl/api/opencl/amdocl/cl_agent_amd.h
+++ b/opencl/api/opencl/amdocl/cl_agent_amd.h
@@ -107,203 +107,149 @@ typedef const struct _cl_agent cl_agent;
/* Context Callbacks */
-typedef void (CL_CALLBACK * acContextCreate_fn)(
- cl_agent * /* agent */,
- cl_context /* context */);
+typedef void(CL_CALLBACK* acContextCreate_fn)(cl_agent* /* agent */, cl_context /* context */);
-typedef void (CL_CALLBACK * acContextFree_fn)(
- cl_agent * /* agent */,
- cl_context /* context */);
+typedef void(CL_CALLBACK* acContextFree_fn)(cl_agent* /* agent */, cl_context /* context */);
/* Command Queue Callbacks */
-typedef void (CL_CALLBACK * acCommandQueueCreate_fn)(
- cl_agent * /* agent */,
- cl_command_queue /* queue */);
+typedef void(CL_CALLBACK* acCommandQueueCreate_fn)(cl_agent* /* agent */,
+ cl_command_queue /* queue */);
-typedef void (CL_CALLBACK * acCommandQueueFree_fn)(
- cl_agent * /* agent */,
- cl_command_queue /* queue */);
+typedef void(CL_CALLBACK* acCommandQueueFree_fn)(cl_agent* /* agent */,
+ cl_command_queue /* queue */);
/* Event Callbacks */
-typedef void (CL_CALLBACK * acEventCreate_fn)(
- cl_agent * /* agent */,
- cl_event /* event */,
- cl_command_type /* type */);
+typedef void(CL_CALLBACK* acEventCreate_fn)(cl_agent* /* agent */, cl_event /* event */,
+ cl_command_type /* type */);
-typedef void (CL_CALLBACK * acEventFree_fn)(
- cl_agent * /* agent */,
- cl_event /* event */);
+typedef void(CL_CALLBACK* acEventFree_fn)(cl_agent* /* agent */, cl_event /* event */);
-typedef void (CL_CALLBACK * acEventStatusChanged_fn)(
- cl_agent * /* agent */,
- cl_event /* event */,
- cl_int /* execution_status */,
- cl_long /* epoch_time_stamp */);
+typedef void(CL_CALLBACK* acEventStatusChanged_fn)(cl_agent* /* agent */, cl_event /* event */,
+ cl_int /* execution_status */,
+ cl_long /* epoch_time_stamp */);
/* Memory Object Callbacks */
-typedef void (CL_CALLBACK * acMemObjectCreate_fn)(
- cl_agent * /* agent */,
- cl_mem /* memobj */);
+typedef void(CL_CALLBACK* acMemObjectCreate_fn)(cl_agent* /* agent */, cl_mem /* memobj */);
-typedef void (CL_CALLBACK * acMemObjectFree_fn)(
- cl_agent * /* agent */,
- cl_mem /* memobj */);
+typedef void(CL_CALLBACK* acMemObjectFree_fn)(cl_agent* /* agent */, cl_mem /* memobj */);
-typedef void (CL_CALLBACK * acMemObjectAcquired_fn)(
- cl_agent * /* agent */,
- cl_mem /* memobj */,
- cl_device_id /* device */,
- cl_long /* elapsed_time */);
+typedef void(CL_CALLBACK* acMemObjectAcquired_fn)(cl_agent* /* agent */, cl_mem /* memobj */,
+ cl_device_id /* device */,
+ cl_long /* elapsed_time */);
/* Sampler Callbacks */
-typedef void (CL_CALLBACK * acSamplerCreate_fn)(
- cl_agent * /* agent */,
- cl_sampler /* sampler */);
+typedef void(CL_CALLBACK* acSamplerCreate_fn)(cl_agent* /* agent */, cl_sampler /* sampler */);
-typedef void (CL_CALLBACK * acSamplerFree_fn)(
- cl_agent * /* agent */,
- cl_sampler /* sampler */);
+typedef void(CL_CALLBACK* acSamplerFree_fn)(cl_agent* /* agent */, cl_sampler /* sampler */);
/* Program Callbacks */
-typedef void (CL_CALLBACK * acProgramCreate_fn)(
- cl_agent * /* agent */,
- cl_program /* program */);
+typedef void(CL_CALLBACK* acProgramCreate_fn)(cl_agent* /* agent */, cl_program /* program */);
-typedef void (CL_CALLBACK * acProgramFree_fn)(
- cl_agent * /* agent */,
- cl_program /* program */);
+typedef void(CL_CALLBACK* acProgramFree_fn)(cl_agent* /* agent */, cl_program /* program */);
-typedef void (CL_CALLBACK * acProgramBuild_fn)(
- cl_agent * /* agent */,
- cl_program /* program */);
+typedef void(CL_CALLBACK* acProgramBuild_fn)(cl_agent* /* agent */, cl_program /* program */);
/* Kernel Callbacks */
-typedef void (CL_CALLBACK * acKernelCreate_fn)(
- cl_agent * /* agent */,
- cl_kernel /* kernel */);
+typedef void(CL_CALLBACK* acKernelCreate_fn)(cl_agent* /* agent */, cl_kernel /* kernel */);
-typedef void (CL_CALLBACK * acKernelFree_fn)(
- cl_agent * /* agent */,
- cl_kernel /* kernel */);
+typedef void(CL_CALLBACK* acKernelFree_fn)(cl_agent* /* agent */, cl_kernel /* kernel */);
-typedef void (CL_CALLBACK * acKernelSetArg_fn)(
- cl_agent * /* agent */,
- cl_kernel /* kernel */,
- cl_int /* arg_index */,
- size_t /* size */,
- const void * /* value_ptr */);
+typedef void(CL_CALLBACK* acKernelSetArg_fn)(cl_agent* /* agent */, cl_kernel /* kernel */,
+ cl_int /* arg_index */, size_t /* size */,
+ const void* /* value_ptr */);
-typedef struct _cl_agent_callbacks
-{
- /* Context Callbacks */
- acContextCreate_fn ContextCreate;
- acContextFree_fn ContextFree;
+typedef struct _cl_agent_callbacks {
+ /* Context Callbacks */
+ acContextCreate_fn ContextCreate;
+ acContextFree_fn ContextFree;
- /* Command Queue Callbacks */
- acCommandQueueCreate_fn CommandQueueCreate;
- acCommandQueueFree_fn CommandQueueFree;
+ /* Command Queue Callbacks */
+ acCommandQueueCreate_fn CommandQueueCreate;
+ acCommandQueueFree_fn CommandQueueFree;
- /* Event Callbacks */
- acEventCreate_fn EventCreate;
- acEventFree_fn EventFree;
- acEventStatusChanged_fn EventStatusChanged;
+ /* Event Callbacks */
+ acEventCreate_fn EventCreate;
+ acEventFree_fn EventFree;
+ acEventStatusChanged_fn EventStatusChanged;
- /* Memory Object Callbacks */
- acMemObjectCreate_fn MemObjectCreate;
- acMemObjectFree_fn MemObjectFree;
- acMemObjectAcquired_fn MemObjectAcquired;
+ /* Memory Object Callbacks */
+ acMemObjectCreate_fn MemObjectCreate;
+ acMemObjectFree_fn MemObjectFree;
+ acMemObjectAcquired_fn MemObjectAcquired;
- /* Sampler Callbacks */
- acSamplerCreate_fn SamplerCreate;
- acSamplerFree_fn SamplerFree;
+ /* Sampler Callbacks */
+ acSamplerCreate_fn SamplerCreate;
+ acSamplerFree_fn SamplerFree;
- /* Program Callbacks */
- acProgramCreate_fn ProgramCreate;
- acProgramFree_fn ProgramFree;
- acProgramBuild_fn ProgramBuild;
+ /* Program Callbacks */
+ acProgramCreate_fn ProgramCreate;
+ acProgramFree_fn ProgramFree;
+ acProgramBuild_fn ProgramBuild;
- /* Kernel Callbacks */
- acKernelCreate_fn KernelCreate;
- acKernelFree_fn KernelFree;
- acKernelSetArg_fn KernelSetArg;
+ /* Kernel Callbacks */
+ acKernelCreate_fn KernelCreate;
+ acKernelFree_fn KernelFree;
+ acKernelSetArg_fn KernelSetArg;
} cl_agent_callbacks;
typedef cl_uint cl_agent_capability_action;
-#define CL_AGENT_ADD_CAPABILITIES 0x0
+#define CL_AGENT_ADD_CAPABILITIES 0x0
#define CL_AGENT_RELINQUISH_CAPABILITIES 0x1
-typedef struct _cl_agent_capabilities
-{
- cl_bitfield canGenerateContextEvents : 1;
- cl_bitfield canGenerateCommandQueueEvents : 1;
- cl_bitfield canGenerateEventEvents : 1;
- cl_bitfield canGenerateMemObjectEvents : 1;
- cl_bitfield canGenerateSamplerEvents : 1;
- cl_bitfield canGenerateProgramEvents : 1;
- cl_bitfield canGenerateKernelEvents : 1;
+typedef struct _cl_agent_capabilities {
+ cl_bitfield canGenerateContextEvents : 1;
+ cl_bitfield canGenerateCommandQueueEvents : 1;
+ cl_bitfield canGenerateEventEvents : 1;
+ cl_bitfield canGenerateMemObjectEvents : 1;
+ cl_bitfield canGenerateSamplerEvents : 1;
+ cl_bitfield canGenerateProgramEvents : 1;
+ cl_bitfield canGenerateKernelEvents : 1;
} cl_agent_capabilities;
-struct _cl_agent
-{
- cl_int (CL_API_CALL * GetVersionNumber)(
- cl_agent * /* agent */,
- cl_int * /* version_ret */);
+struct _cl_agent {
+ cl_int(CL_API_CALL* GetVersionNumber)(cl_agent* /* agent */, cl_int* /* version_ret */);
- cl_int (CL_API_CALL * GetPlatform)(
- cl_agent * /* agent */,
- cl_platform_id * /* platform_id_ret */);
+ cl_int(CL_API_CALL* GetPlatform)(cl_agent* /* agent */, cl_platform_id* /* platform_id_ret */);
- cl_int (CL_API_CALL * GetTime) (
- cl_agent * /* agent */,
- cl_long * /* time_nanos */);
+ cl_int(CL_API_CALL* GetTime)(cl_agent* /* agent */, cl_long* /* time_nanos */);
- cl_int (CL_API_CALL * SetCallbacks)(
- cl_agent * /* agent */,
- const cl_agent_callbacks * /* callbacks */,
- size_t /* size */);
+ cl_int(CL_API_CALL* SetCallbacks)(cl_agent* /* agent */,
+ const cl_agent_callbacks* /* callbacks */, size_t /* size */);
- cl_int (CL_API_CALL * GetPotentialCapabilities)(
- cl_agent * /* agent */,
- cl_agent_capabilities * /* capabilities */);
+ cl_int(CL_API_CALL* GetPotentialCapabilities)(cl_agent* /* agent */,
+ cl_agent_capabilities* /* capabilities */);
- cl_int (CL_API_CALL * GetCapabilities)(
- cl_agent * /* agent */,
- cl_agent_capabilities * /* capabilities */);
+ cl_int(CL_API_CALL* GetCapabilities)(cl_agent* /* agent */,
+ cl_agent_capabilities* /* capabilities */);
- cl_int (CL_API_CALL * SetCapabilities)(
- cl_agent * /* agent */,
- const cl_agent_capabilities * /* capabilities */,
- cl_agent_capability_action /* action */);
+ cl_int(CL_API_CALL* SetCapabilities)(cl_agent* /* agent */,
+ const cl_agent_capabilities* /* capabilities */,
+ cl_agent_capability_action /* action */);
- cl_int (CL_API_CALL * GetICDDispatchTable)(
- cl_agent * /* agent */,
- cl_icd_dispatch_table * /* table */,
- size_t /* size */);
+ cl_int(CL_API_CALL* GetICDDispatchTable)(cl_agent* /* agent */,
+ cl_icd_dispatch_table* /* table */, size_t /* size */);
- cl_int (CL_API_CALL * SetICDDispatchTable)(
- cl_agent * /* agent */,
- const cl_icd_dispatch_table * /* table */,
- size_t /* size */);
+ cl_int(CL_API_CALL* SetICDDispatchTable)(cl_agent* /* agent */,
+ const cl_icd_dispatch_table* /* table */,
+ size_t /* size */);
- /* add Kernel/Program helper functions, etc... */
+ /* add Kernel/Program helper functions, etc... */
};
-extern cl_int CL_CALLBACK
-clAgent_OnLoad(cl_agent * /* agent */);
+extern cl_int CL_CALLBACK clAgent_OnLoad(cl_agent* /* agent */);
-extern void CL_CALLBACK
-clAgent_OnUnload(cl_agent * /* agent */);
+extern void CL_CALLBACK clAgent_OnUnload(cl_agent* /* agent */);
#ifdef __cplusplus
}
diff --git a/opencl/api/opencl/amdocl/cl_command.cpp b/opencl/api/opencl/amdocl/cl_command.cpp
index 4f1fb20938..82dcdf8025 100644
--- a/opencl/api/opencl/amdocl/cl_command.cpp
+++ b/opencl/api/opencl/amdocl/cl_command.cpp
@@ -54,132 +54,122 @@
*
* \version 1.0r33
*/
-RUNTIME_ENTRY_RET(cl_command_queue, clCreateCommandQueueWithProperties, (
- cl_context context,
- cl_device_id device,
- const cl_queue_properties *queue_properties,
- cl_int *errcode_ret))
-{
- if (!is_valid(context)) {
- *not_null(errcode_ret) = CL_INVALID_CONTEXT;
- return (cl_command_queue) 0;
- }
+RUNTIME_ENTRY_RET(cl_command_queue, clCreateCommandQueueWithProperties,
+ (cl_context context, cl_device_id device,
+ const cl_queue_properties* queue_properties, cl_int* errcode_ret)) {
+ if (!is_valid(context)) {
+ *not_null(errcode_ret) = CL_INVALID_CONTEXT;
+ return (cl_command_queue)0;
+ }
- amd::Context& amdContext = *as_amd(context);
- amd::Device& amdDevice = *as_amd(device);
+ amd::Context& amdContext = *as_amd(context);
+ amd::Device& amdDevice = *as_amd(device);
- if (!is_valid(device) ||
- !amdContext.containsDevice(&amdDevice)) {
- *not_null(errcode_ret) = CL_INVALID_DEVICE;
- return (cl_command_queue) 0;
- }
+ if (!is_valid(device) || !amdContext.containsDevice(&amdDevice)) {
+ *not_null(errcode_ret) = CL_INVALID_DEVICE;
+ return (cl_command_queue)0;
+ }
- cl_command_queue_properties properties = 0;
- const struct QueueProperty {
- cl_queue_properties name;
- union {
- cl_queue_properties raw;
- //FIXME_lmoriche: Check with Khronos. cl_queue_properties is an intptr,
- //but cl_command_queue_properties is a bitfield (truncate?).
- //cl_command_queue_properties properties;
- cl_uint size;
- } value;
- } *p = reinterpret_cast(queue_properties);
+ cl_command_queue_properties properties = 0;
+ const struct QueueProperty {
+ cl_queue_properties name;
+ union {
+ cl_queue_properties raw;
+ // FIXME_lmoriche: Check with Khronos. cl_queue_properties is an intptr,
+ // but cl_command_queue_properties is a bitfield (truncate?).
+ // cl_command_queue_properties properties;
+ cl_uint size;
+ } value;
+ }* p = reinterpret_cast(queue_properties);
- uint queueSize = amdDevice.info().queueOnDevicePreferredSize_;
- uint queueRTCUs = amd::CommandQueue::RealTimeDisabled;
- amd::CommandQueue::Priority priority = amd::CommandQueue::Priority::Normal;
- if (p != NULL) while(p->name != 0) {
- switch(p->name) {
+ uint queueSize = amdDevice.info().queueOnDevicePreferredSize_;
+ uint queueRTCUs = amd::CommandQueue::RealTimeDisabled;
+ amd::CommandQueue::Priority priority = amd::CommandQueue::Priority::Normal;
+ if (p != NULL)
+ while (p->name != 0) {
+ switch (p->name) {
case CL_QUEUE_PROPERTIES:
- //FIXME_lmoriche: See comment above.
- //properties = p->value.properties;
- properties = static_cast(p->value.raw);
- break;
+ // FIXME_lmoriche: See comment above.
+ // properties = p->value.properties;
+ properties = static_cast(p->value.raw);
+ break;
case CL_QUEUE_SIZE:
- queueSize = p->value.size;
- break;
-#define CL_QUEUE_REAL_TIME_COMPUTE_UNITS_AMD 0x404f
+ queueSize = p->value.size;
+ break;
+#define CL_QUEUE_REAL_TIME_COMPUTE_UNITS_AMD 0x404f
case CL_QUEUE_REAL_TIME_COMPUTE_UNITS_AMD:
- queueRTCUs = p->value.size;
- break;
-#define CL_QUEUE_MEDIUM_PRIORITY_AMD 0x4050
+ queueRTCUs = p->value.size;
+ break;
+#define CL_QUEUE_MEDIUM_PRIORITY_AMD 0x4050
case CL_QUEUE_MEDIUM_PRIORITY_AMD:
- priority = amd::CommandQueue::Priority::Medium;
- break;
+ priority = amd::CommandQueue::Priority::Medium;
+ break;
default:
- *not_null(errcode_ret) = CL_INVALID_QUEUE_PROPERTIES;
- LogWarning("invalid property name");
- return (cl_command_queue) 0;
+ *not_null(errcode_ret) = CL_INVALID_QUEUE_PROPERTIES;
+ LogWarning("invalid property name");
+ return (cl_command_queue)0;
+ }
+ ++p;
+ }
+
+ if (queueSize > amdDevice.info().queueOnDeviceMaxSize_) {
+ *not_null(errcode_ret) = CL_INVALID_VALUE;
+ return (cl_command_queue)0;
+ }
+
+ if ((queueRTCUs != amd::CommandQueue::RealTimeDisabled) &&
+ ((queueRTCUs > amdDevice.info().numRTCUs_) || (queueRTCUs == 0))) {
+ *not_null(errcode_ret) = CL_INVALID_VALUE;
+ return (cl_command_queue)0;
+ }
+
+ amd::CommandQueue* queue = NULL;
+ {
+ amd::ScopedLock lock(amdContext.lock());
+
+ // Check if the app creates a host queue
+ if (!(properties & CL_QUEUE_ON_DEVICE)) {
+ queue = new amd::HostQueue(amdContext, amdDevice, properties, queueRTCUs, priority);
+ } else {
+ // Is it a device default queue
+ if (properties & CL_QUEUE_ON_DEVICE_DEFAULT) {
+ queue = amdContext.defDeviceQueue(amdDevice);
+ // If current context has one already then return it
+ if (NULL != queue) {
+ queue->retain();
+ *not_null(errcode_ret) = CL_SUCCESS;
+ return as_cl(queue);
}
- ++p;
+ }
+ // Check if runtime can allocate a new device queue on this context
+ if (amdContext.isDevQueuePossible(amdDevice)) {
+ queue = new amd::DeviceQueue(amdContext, amdDevice, properties, queueSize);
+ }
}
- if (queueSize > amdDevice.info().queueOnDeviceMaxSize_) {
- *not_null(errcode_ret) = CL_INVALID_VALUE;
- return (cl_command_queue) 0;
+ if (queue == NULL || !queue->create()) {
+ *not_null(errcode_ret) = CL_OUT_OF_HOST_MEMORY;
+ delete queue;
+ return (cl_command_queue)0;
}
+ }
- if ((queueRTCUs != amd::CommandQueue::RealTimeDisabled) &&
- ((queueRTCUs > amdDevice.info().numRTCUs_) || (queueRTCUs == 0))) {
- *not_null(errcode_ret) = CL_INVALID_VALUE;
- return (cl_command_queue) 0;
- }
+ if (amd::Agent::shouldPostCommandQueueEvents()) {
+ amd::Agent::postCommandQueueCreate(as_cl(queue->asCommandQueue()));
+ }
- amd::CommandQueue* queue = NULL;
- {
- amd::ScopedLock lock(amdContext.lock());
-
- // Check if the app creates a host queue
- if (!(properties & CL_QUEUE_ON_DEVICE)) {
- queue = new amd::HostQueue(amdContext, amdDevice, properties, queueRTCUs, priority);
- }
- else {
- // Is it a device default queue
- if (properties & CL_QUEUE_ON_DEVICE_DEFAULT) {
- queue = amdContext.defDeviceQueue(amdDevice);
- // If current context has one already then return it
- if (NULL != queue) {
- queue->retain();
- *not_null(errcode_ret) = CL_SUCCESS;
- return as_cl(queue);
- }
- }
- // Check if runtime can allocate a new device queue on this context
- if (amdContext.isDevQueuePossible(amdDevice)) {
- queue = new amd::DeviceQueue(
- amdContext, amdDevice, properties, queueSize);
- }
- }
-
- if (queue == NULL || !queue->create()) {
- *not_null(errcode_ret) = CL_OUT_OF_HOST_MEMORY;
- delete queue;
- return (cl_command_queue) 0;
- }
- }
-
- if (amd::Agent::shouldPostCommandQueueEvents()) {
- amd::Agent::postCommandQueueCreate(as_cl(queue->asCommandQueue()));
- }
-
- *not_null(errcode_ret) = CL_SUCCESS;
- return as_cl(queue);
+ *not_null(errcode_ret) = CL_SUCCESS;
+ return as_cl(queue);
}
RUNTIME_EXIT
-RUNTIME_ENTRY_RET(cl_command_queue, clCreateCommandQueue, (
- cl_context context,
- cl_device_id device,
- cl_command_queue_properties properties,
- cl_int *errcode_ret))
-{
- const cl_queue_properties cprops[] = {
- CL_QUEUE_PROPERTIES,
- static_cast(properties),
- 0 };
- return clCreateCommandQueueWithProperties(
- context, device, properties ? cprops : NULL, errcode_ret);
+RUNTIME_ENTRY_RET(cl_command_queue, clCreateCommandQueue,
+ (cl_context context, cl_device_id device, cl_command_queue_properties properties,
+ cl_int* errcode_ret)) {
+ const cl_queue_properties cprops[] = {CL_QUEUE_PROPERTIES,
+ static_cast(properties), 0};
+ return clCreateCommandQueueWithProperties(context, device, properties ? cprops : NULL,
+ errcode_ret);
}
RUNTIME_EXIT
@@ -199,13 +189,12 @@ RUNTIME_EXIT
*
* \version 1.0r33
*/
-RUNTIME_ENTRY(cl_int, clRetainCommandQueue, (cl_command_queue command_queue))
-{
- if (!is_valid(command_queue)) {
- return CL_INVALID_COMMAND_QUEUE;
- }
- as_amd(command_queue)->retain();
- return CL_SUCCESS;
+RUNTIME_ENTRY(cl_int, clRetainCommandQueue, (cl_command_queue command_queue)) {
+ if (!is_valid(command_queue)) {
+ return CL_INVALID_COMMAND_QUEUE;
+ }
+ as_amd(command_queue)->retain();
+ return CL_SUCCESS;
}
RUNTIME_EXIT
@@ -222,13 +211,12 @@ RUNTIME_EXIT
*
* \version 1.0r33
*/
-RUNTIME_ENTRY(cl_int, clReleaseCommandQueue, (cl_command_queue command_queue))
-{
- if (!is_valid(command_queue)) {
- return CL_INVALID_COMMAND_QUEUE;
- }
- as_amd(command_queue)->release();
- return CL_SUCCESS;
+RUNTIME_ENTRY(cl_int, clReleaseCommandQueue, (cl_command_queue command_queue)) {
+ if (!is_valid(command_queue)) {
+ return CL_INVALID_COMMAND_QUEUE;
+ }
+ as_amd(command_queue)->release();
+ return CL_SUCCESS;
}
RUNTIME_EXIT
@@ -259,64 +247,51 @@ RUNTIME_EXIT
*
* \version 1.0r33
*/
-RUNTIME_ENTRY(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))
-{
- if (!is_valid(command_queue)) {
- return CL_INVALID_COMMAND_QUEUE;
- }
+RUNTIME_ENTRY(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)) {
+ if (!is_valid(command_queue)) {
+ return CL_INVALID_COMMAND_QUEUE;
+ }
- switch (param_name) {
+ switch (param_name) {
case CL_QUEUE_CONTEXT: {
- cl_context context = const_cast(
- as_cl(&as_amd(command_queue)->context()));
- return amd::clGetInfo(
- context, param_value_size, param_value, param_value_size_ret);
+ cl_context context = const_cast(as_cl(&as_amd(command_queue)->context()));
+ return amd::clGetInfo(context, param_value_size, param_value, param_value_size_ret);
}
case CL_QUEUE_DEVICE: {
- cl_device_id device = const_cast(
- as_cl(&as_amd(command_queue)->device()));
- return amd::clGetInfo(
- device, param_value_size, param_value, param_value_size_ret);
+ cl_device_id device = const_cast(as_cl(&as_amd(command_queue)->device()));
+ return amd::clGetInfo(device, param_value_size, param_value, param_value_size_ret);
}
case CL_QUEUE_PROPERTIES: {
- cl_command_queue_properties properties
- = as_amd(command_queue)->properties().value_;
- return amd::clGetInfo(
- properties, param_value_size, param_value, param_value_size_ret);
+ cl_command_queue_properties properties = as_amd(command_queue)->properties().value_;
+ return amd::clGetInfo(properties, param_value_size, param_value, param_value_size_ret);
}
case CL_QUEUE_REFERENCE_COUNT: {
- cl_uint count = as_amd(command_queue)->referenceCount();
- return amd::clGetInfo(
- count, param_value_size, param_value, param_value_size_ret);
+ cl_uint count = as_amd(command_queue)->referenceCount();
+ return amd::clGetInfo(count, param_value_size, param_value, param_value_size_ret);
}
case CL_QUEUE_SIZE: {
- const amd::DeviceQueue* deviceQueue = as_amd(command_queue)->asDeviceQueue();
- if (NULL == deviceQueue) {
- return CL_INVALID_COMMAND_QUEUE;
- }
- cl_uint size = deviceQueue->size();
- return amd::clGetInfo(
- size, param_value_size, param_value, param_value_size_ret);
+ const amd::DeviceQueue* deviceQueue = as_amd(command_queue)->asDeviceQueue();
+ if (NULL == deviceQueue) {
+ return CL_INVALID_COMMAND_QUEUE;
+ }
+ cl_uint size = deviceQueue->size();
+ return amd::clGetInfo(size, param_value_size, param_value, param_value_size_ret);
}
case CL_QUEUE_THREAD_HANDLE_AMD: {
- const amd::HostQueue* hostQueue = as_amd(command_queue)->asHostQueue();
- if (NULL == hostQueue) {
- return CL_INVALID_COMMAND_QUEUE;
- }
- const void* handle = hostQueue->thread().handle();
- return amd::clGetInfo(
- handle, param_value_size, param_value, param_value_size_ret);
+ const amd::HostQueue* hostQueue = as_amd(command_queue)->asHostQueue();
+ if (NULL == hostQueue) {
+ return CL_INVALID_COMMAND_QUEUE;
+ }
+ const void* handle = hostQueue->thread().handle();
+ return amd::clGetInfo(handle, param_value_size, param_value, param_value_size_ret);
}
default:
- break;
- }
+ break;
+ }
- return CL_INVALID_VALUE;
+ return CL_INVALID_VALUE;
}
RUNTIME_EXIT
@@ -344,32 +319,27 @@ RUNTIME_EXIT
*
* \version 1.0r33
*/
-RUNTIME_ENTRY(cl_int, clSetCommandQueueProperty, (
- cl_command_queue command_queue,
- cl_command_queue_properties properties,
- cl_bool enable,
- cl_command_queue_properties *old_properties))
-{
- if (!is_valid(command_queue)) {
- return CL_INVALID_COMMAND_QUEUE;
- }
+RUNTIME_ENTRY(cl_int, clSetCommandQueueProperty,
+ (cl_command_queue command_queue, cl_command_queue_properties properties,
+ cl_bool enable, cl_command_queue_properties* old_properties)) {
+ if (!is_valid(command_queue)) {
+ return CL_INVALID_COMMAND_QUEUE;
+ }
- *not_null(old_properties)
- = as_amd(command_queue)->properties().value_;
+ *not_null(old_properties) = as_amd(command_queue)->properties().value_;
- if (properties & CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE) {
- clFinish(command_queue);
- }
+ if (properties & CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE) {
+ clFinish(command_queue);
+ }
- bool success;
- if (enable == CL_TRUE) {
- success = as_amd(command_queue)->properties().set(properties);
- }
- else {
- success = as_amd(command_queue)->properties().clear(properties);
- }
+ bool success;
+ if (enable == CL_TRUE) {
+ success = as_amd(command_queue)->properties().set(properties);
+ } else {
+ success = as_amd(command_queue)->properties().clear(properties);
+ }
- return success ? CL_SUCCESS : CL_INVALID_QUEUE_PROPERTIES;
+ return success ? CL_SUCCESS : CL_INVALID_QUEUE_PROPERTIES;
}
RUNTIME_EXIT
diff --git a/opencl/api/opencl/amdocl/cl_context.cpp b/opencl/api/opencl/amdocl/cl_context.cpp
index 4ee070b1d6..8472cac544 100644
--- a/opencl/api/opencl/amdocl/cl_context.cpp
+++ b/opencl/api/opencl/amdocl/cl_context.cpp
@@ -15,7 +15,7 @@
#include "cl_d3d9_amd.hpp"
#include "cl_d3d10_amd.hpp"
#include "cl_d3d11_amd.hpp"
-#endif // _WIN32
+#endif // _WIN32
#include "cl_kernel_info_amd.h"
#include "cl_profile_amd.h"
#include "cl_platform_amd.h"
@@ -81,63 +81,56 @@
*
* \version 1.0r33
*/
-RUNTIME_ENTRY_RET(cl_context, 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_int errcode;
- amd::Context::Info info;
+RUNTIME_ENTRY_RET(cl_context, 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_int errcode;
+ amd::Context::Info info;
- errcode = amd::Context::checkProperties(properties, &info);
- if (CL_SUCCESS != errcode) {
- *not_null(errcode_ret) = errcode;
- return (cl_context) 0;
+ errcode = amd::Context::checkProperties(properties, &info);
+ if (CL_SUCCESS != errcode) {
+ *not_null(errcode_ret) = errcode;
+ return (cl_context)0;
+ }
+
+ if (num_devices == 0 || devices == NULL) {
+ *not_null(errcode_ret) = CL_INVALID_VALUE;
+ return (cl_context)0;
+ }
+
+ std::vector devices_;
+ for (cl_uint i = 0; i < num_devices; ++i) {
+ // FIXME_lmoriche: Set errcode_ret to CL_DEVICE_NOT_AVAILABLE if a
+ // device in devices is no longer available.
+ cl_device_id device = devices[i];
+
+ if (!is_valid(device)) {
+ *not_null(errcode_ret) = CL_INVALID_DEVICE;
+ return (cl_context)0;
}
+ devices_.push_back(as_amd(device));
+ }
- if (num_devices == 0 || devices == NULL) {
- *not_null(errcode_ret) = CL_INVALID_VALUE;
- return (cl_context) 0;
- }
+ amd::Context* context = new amd::Context(devices_, info);
+ if (context == NULL) {
+ *not_null(errcode_ret) = CL_OUT_OF_HOST_MEMORY;
+ return (cl_context)0;
+ }
- std::vector devices_;
- for (cl_uint i = 0; i < num_devices; ++i) {
- // FIXME_lmoriche: Set errcode_ret to CL_DEVICE_NOT_AVAILABLE if a
- // device in devices is no longer available.
- cl_device_id device = devices[i];
+ if (CL_SUCCESS != (errcode = context->create(properties))) {
+ context->release();
+ *not_null(errcode_ret) = errcode;
+ return (cl_context)0;
+ }
- if (!is_valid(device)) {
- *not_null(errcode_ret) = CL_INVALID_DEVICE;
- return (cl_context) 0;
- }
- devices_.push_back(as_amd(device));
- }
+ if (amd::Agent::shouldPostContextEvents()) {
+ amd::Agent::postContextCreate(as_cl(context));
+ }
- amd::Context* context = new amd::Context(devices_, info);
- if (context == NULL) {
- *not_null(errcode_ret) = CL_OUT_OF_HOST_MEMORY;
- return (cl_context) 0;
- }
-
- if (CL_SUCCESS != (errcode = context->create(properties))) {
- context->release();
- *not_null(errcode_ret) = errcode;
- return (cl_context) 0;
- }
-
- if (amd::Agent::shouldPostContextEvents()) {
- amd::Agent::postContextCreate(as_cl(context));
- }
-
- *not_null(errcode_ret) = CL_SUCCESS;
- return as_cl(context);
+ *not_null(errcode_ret) = CL_SUCCESS;
+ return as_cl(context);
}
RUNTIME_EXIT
@@ -168,49 +161,38 @@ RUNTIME_EXIT
*
* \version 1.0r33
*/
-RUNTIME_ENTRY_RET(cl_context, 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))
-{
- amd::Context::Info info;
- cl_int errcode = amd::Context::checkProperties(properties, &info);
- if (errcode != CL_SUCCESS) {
- *not_null(errcode_ret) = errcode;
- return (cl_context) 0;
- }
+RUNTIME_ENTRY_RET(cl_context, 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)) {
+ amd::Context::Info info;
+ cl_int errcode = amd::Context::checkProperties(properties, &info);
+ if (errcode != CL_SUCCESS) {
+ *not_null(errcode_ret) = errcode;
+ return (cl_context)0;
+ }
- // Get the devices of the given type.
- cl_uint num_devices;
- bool offlineDevices =
- (info.flags_ & amd::Context::OfflineDevices) ? true : false;
- if (!amd::Device::getDeviceIDs(device_type, 0, NULL,
- &num_devices, offlineDevices)) {
- *not_null(errcode_ret) = CL_DEVICE_NOT_FOUND;
- return (cl_context) 0;
- }
+ // Get the devices of the given type.
+ cl_uint num_devices;
+ bool offlineDevices = (info.flags_ & amd::Context::OfflineDevices) ? true : false;
+ if (!amd::Device::getDeviceIDs(device_type, 0, NULL, &num_devices, offlineDevices)) {
+ *not_null(errcode_ret) = CL_DEVICE_NOT_FOUND;
+ return (cl_context)0;
+ }
- assert(num_devices > 0 && "Should have returned an error!");
- cl_device_id* devices = (cl_device_id *)
- alloca(num_devices * sizeof(cl_device_id));
+ assert(num_devices > 0 && "Should have returned an error!");
+ cl_device_id* devices = (cl_device_id*)alloca(num_devices * sizeof(cl_device_id));
- if (!amd::Device::getDeviceIDs(device_type, num_devices,
- devices, NULL, offlineDevices)) {
- *not_null(errcode_ret) = CL_DEVICE_NOT_FOUND;
- return (cl_context) 0;
- }
+ if (!amd::Device::getDeviceIDs(device_type, num_devices, devices, NULL, offlineDevices)) {
+ *not_null(errcode_ret) = CL_DEVICE_NOT_FOUND;
+ return (cl_context)0;
+ }
- // Create a new context with the devices
- cl_context context = clCreateContext(
- properties, num_devices, devices, pfn_notify, user_data, errcode_ret);
+ // Create a new context with the devices
+ cl_context context =
+ clCreateContext(properties, num_devices, devices, pfn_notify, user_data, errcode_ret);
- return context;
+ return context;
}
RUNTIME_EXIT
@@ -230,13 +212,12 @@ RUNTIME_EXIT
*
* \version 1.0r33
*/
-RUNTIME_ENTRY(cl_int, clRetainContext, (cl_context context))
-{
- if (!is_valid(context)) {
- return CL_INVALID_CONTEXT;
- }
- as_amd(context)->retain();
- return CL_SUCCESS;
+RUNTIME_ENTRY(cl_int, clRetainContext, (cl_context context)) {
+ if (!is_valid(context)) {
+ return CL_INVALID_CONTEXT;
+ }
+ as_amd(context)->retain();
+ return CL_SUCCESS;
}
RUNTIME_EXIT
@@ -252,13 +233,12 @@ RUNTIME_EXIT
*
* \version 1.0r33
*/
-RUNTIME_ENTRY(cl_int, clReleaseContext, (cl_context context))
-{
- if (!is_valid(context)) {
- return CL_INVALID_CONTEXT;
- }
- as_amd(context)->release();
- return CL_SUCCESS;
+RUNTIME_ENTRY(cl_int, clReleaseContext, (cl_context context)) {
+ if (!is_valid(context)) {
+ return CL_INVALID_CONTEXT;
+ }
+ as_amd(context)->release();
+ return CL_SUCCESS;
}
RUNTIME_EXIT
@@ -288,165 +268,159 @@ RUNTIME_EXIT
*
* \version 1.0r33
*/
-RUNTIME_ENTRY(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))
-{
- if (!is_valid(context)) {
- return CL_INVALID_CONTEXT;
- }
+RUNTIME_ENTRY(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)) {
+ if (!is_valid(context)) {
+ return CL_INVALID_CONTEXT;
+ }
- switch (param_name) {
+ switch (param_name) {
case CL_CONTEXT_REFERENCE_COUNT: {
- cl_uint count = as_amd(context)->referenceCount();
- return amd::clGetInfo(
- count, param_value_size, param_value, param_value_size_ret);
+ cl_uint count = as_amd(context)->referenceCount();
+ return amd::clGetInfo(count, param_value_size, param_value, param_value_size_ret);
}
case CL_CONTEXT_NUM_DEVICES: {
- cl_uint numDevices = (cl_uint)as_amd(context)->devices().size();
- return amd::clGetInfo(
- numDevices, param_value_size, param_value, param_value_size_ret);
+ cl_uint numDevices = (cl_uint)as_amd(context)->devices().size();
+ return amd::clGetInfo(numDevices, param_value_size, param_value, param_value_size_ret);
}
case CL_CONTEXT_DEVICES: {
- const std::vector& devices = as_amd(context)->devices();
- size_t numDevices = devices.size();
- size_t valueSize = numDevices * sizeof(cl_device_id*);
+ const std::vector& devices = as_amd(context)->devices();
+ size_t numDevices = devices.size();
+ size_t valueSize = numDevices * sizeof(cl_device_id*);
- if (param_value != NULL && param_value_size < valueSize) {
- return CL_INVALID_VALUE;
+ if (param_value != NULL && param_value_size < valueSize) {
+ return CL_INVALID_VALUE;
+ }
+ *not_null(param_value_size_ret) = valueSize;
+ if (param_value != NULL) {
+ cl_device_id* device_list = (cl_device_id*)param_value;
+ std::vector::const_iterator it;
+ for (it = devices.begin(); it != devices.end(); ++it) {
+ *device_list++ = const_cast(as_cl(*it));
}
- *not_null(param_value_size_ret) = valueSize;
- if (param_value != NULL) {
- cl_device_id* device_list = (cl_device_id*) param_value;
- std::vector::const_iterator it;
- for (it = devices.begin(); it != devices.end(); ++it) {
- *device_list++ = const_cast(as_cl(*it));
- }
- }
- return CL_SUCCESS;
+ }
+ return CL_SUCCESS;
}
case CL_CONTEXT_PROPERTIES: {
- const amd::Context* amdContext = as_amd(context);
- size_t valueSize = amdContext->info().propertiesSize_;
+ const amd::Context* amdContext = as_amd(context);
+ size_t valueSize = amdContext->info().propertiesSize_;
- if (param_value != NULL && param_value_size < valueSize) {
- return CL_INVALID_VALUE;
- }
- *not_null(param_value_size_ret) = valueSize;
- if ((param_value != NULL) && (valueSize != 0)) {
- ::memcpy(param_value, amdContext->properties(), valueSize);
- }
- return CL_SUCCESS;
+ if (param_value != NULL && param_value_size < valueSize) {
+ return CL_INVALID_VALUE;
+ }
+ *not_null(param_value_size_ret) = valueSize;
+ if ((param_value != NULL) && (valueSize != 0)) {
+ ::memcpy(param_value, amdContext->properties(), valueSize);
+ }
+ return CL_SUCCESS;
}
#ifdef _WIN32
case CL_CONTEXT_D3D10_DEVICE_KHR: {
- // Not defined in the ext.spec, but tested in the conf.test
- // Guessing functionality from the test...
- if (param_value != NULL && param_value_size < sizeof(void*)) {
- return CL_INVALID_VALUE;
- }
- const amd::Context* amdContext = as_amd(context);
- if (!(amdContext->info().flags_ & amd::Context::D3D10DeviceKhr)) {
- return CL_INVALID_VALUE;
- }
- *not_null(param_value_size_ret) = sizeof(intptr_t);
- if (param_value != NULL) {
- *(intptr_t*) param_value =
- reinterpret_cast(amdContext->info().hDev_[amd::Context::D3D10DeviceKhrIdx]);
- }
- return CL_SUCCESS;
+ // Not defined in the ext.spec, but tested in the conf.test
+ // Guessing functionality from the test...
+ if (param_value != NULL && param_value_size < sizeof(void*)) {
+ return CL_INVALID_VALUE;
+ }
+ const amd::Context* amdContext = as_amd(context);
+ if (!(amdContext->info().flags_ & amd::Context::D3D10DeviceKhr)) {
+ return CL_INVALID_VALUE;
+ }
+ *not_null(param_value_size_ret) = sizeof(intptr_t);
+ if (param_value != NULL) {
+ *(intptr_t*)param_value =
+ reinterpret_cast(amdContext->info().hDev_[amd::Context::D3D10DeviceKhrIdx]);
+ }
+ return CL_SUCCESS;
}
case CL_CONTEXT_D3D10_PREFER_SHARED_RESOURCES_KHR: {
- if (param_value != NULL && param_value_size < sizeof(cl_bool)) {
- return CL_INVALID_VALUE;
- }
- *not_null(param_value_size_ret) = sizeof(cl_bool);
- if (param_value != NULL) {
- *(cl_bool*) param_value = CL_TRUE;
- }
- return CL_SUCCESS;
+ if (param_value != NULL && param_value_size < sizeof(cl_bool)) {
+ return CL_INVALID_VALUE;
+ }
+ *not_null(param_value_size_ret) = sizeof(cl_bool);
+ if (param_value != NULL) {
+ *(cl_bool*)param_value = CL_TRUE;
+ }
+ return CL_SUCCESS;
}
case CL_CONTEXT_D3D11_DEVICE_KHR: {
- // Not defined in the ext.spec, but tested in the conf.test
- // Guessing functionality from the test...
- if (param_value != NULL && param_value_size < sizeof(void*)) {
- return CL_INVALID_VALUE;
- }
- const amd::Context* amdContext = as_amd(context);
- if (!(amdContext->info().flags_ & amd::Context::D3D11DeviceKhr)) {
- return CL_INVALID_VALUE;
- }
- *not_null(param_value_size_ret) = sizeof(intptr_t);
- if (param_value != NULL) {
- *(intptr_t*) param_value =
- reinterpret_cast(amdContext->info().hDev_[amd::Context::D3D11DeviceKhrIdx]);
- }
- return CL_SUCCESS;
+ // Not defined in the ext.spec, but tested in the conf.test
+ // Guessing functionality from the test...
+ if (param_value != NULL && param_value_size < sizeof(void*)) {
+ return CL_INVALID_VALUE;
+ }
+ const amd::Context* amdContext = as_amd(context);
+ if (!(amdContext->info().flags_ & amd::Context::D3D11DeviceKhr)) {
+ return CL_INVALID_VALUE;
+ }
+ *not_null(param_value_size_ret) = sizeof(intptr_t);
+ if (param_value != NULL) {
+ *(intptr_t*)param_value =
+ reinterpret_cast(amdContext->info().hDev_[amd::Context::D3D11DeviceKhrIdx]);
+ }
+ return CL_SUCCESS;
}
case CL_CONTEXT_D3D11_PREFER_SHARED_RESOURCES_KHR: {
- if (param_value != NULL && param_value_size < sizeof(cl_bool)) {
- return CL_INVALID_VALUE;
- }
- *not_null(param_value_size_ret) = sizeof(cl_bool);
- if (param_value != NULL) {
- *(cl_bool*) param_value = CL_TRUE;
- }
- return CL_SUCCESS;
+ if (param_value != NULL && param_value_size < sizeof(cl_bool)) {
+ return CL_INVALID_VALUE;
+ }
+ *not_null(param_value_size_ret) = sizeof(cl_bool);
+ if (param_value != NULL) {
+ *(cl_bool*)param_value = CL_TRUE;
+ }
+ return CL_SUCCESS;
}
case CL_CONTEXT_ADAPTER_D3D9_KHR: {
- if (param_value != NULL && param_value_size < sizeof(void*)) {
- return CL_INVALID_VALUE;
- }
- const amd::Context* amdContext = as_amd(context);
- if (!(amdContext->info().flags_ & amd::Context::D3D9DeviceKhr)) {
- return CL_INVALID_VALUE;
- }
- *not_null(param_value_size_ret) = sizeof(intptr_t);
- if (param_value != NULL) {
- *(intptr_t*) param_value =
- reinterpret_cast(amdContext->info().hDev_[amd::Context::D3D9DeviceKhrIdx]);
- }
- return CL_SUCCESS;
+ if (param_value != NULL && param_value_size < sizeof(void*)) {
+ return CL_INVALID_VALUE;
+ }
+ const amd::Context* amdContext = as_amd(context);
+ if (!(amdContext->info().flags_ & amd::Context::D3D9DeviceKhr)) {
+ return CL_INVALID_VALUE;
+ }
+ *not_null(param_value_size_ret) = sizeof(intptr_t);
+ if (param_value != NULL) {
+ *(intptr_t*)param_value =
+ reinterpret_cast(amdContext->info().hDev_[amd::Context::D3D9DeviceKhrIdx]);
+ }
+ return CL_SUCCESS;
}
case CL_CONTEXT_ADAPTER_D3D9EX_KHR: {
- if (param_value != NULL && param_value_size < sizeof(void*)) {
- return CL_INVALID_VALUE;
- }
- const amd::Context* amdContext = as_amd(context);
- if (!(amdContext->info().flags_ & amd::Context::D3D9DeviceEXKhr)) {
- return CL_INVALID_VALUE;
- }
- *not_null(param_value_size_ret) = sizeof(intptr_t);
- if (param_value != NULL) {
- *(intptr_t*) param_value =
- reinterpret_cast(amdContext->info().hDev_[amd::Context::D3D9DeviceEXKhrIdx]);
- }
- return CL_SUCCESS;
+ if (param_value != NULL && param_value_size < sizeof(void*)) {
+ return CL_INVALID_VALUE;
+ }
+ const amd::Context* amdContext = as_amd(context);
+ if (!(amdContext->info().flags_ & amd::Context::D3D9DeviceEXKhr)) {
+ return CL_INVALID_VALUE;
+ }
+ *not_null(param_value_size_ret) = sizeof(intptr_t);
+ if (param_value != NULL) {
+ *(intptr_t*)param_value =
+ reinterpret_cast(amdContext->info().hDev_[amd::Context::D3D9DeviceEXKhrIdx]);
+ }
+ return CL_SUCCESS;
}
case CL_CONTEXT_ADAPTER_DXVA_KHR: {
- if (param_value != NULL && param_value_size < sizeof(void*)) {
- return CL_INVALID_VALUE;
- }
- const amd::Context* amdContext = as_amd(context);
- if (!(amdContext->info().flags_ & amd::Context::D3D9DeviceVAKhr)) {
- return CL_INVALID_VALUE;
- }
- *not_null(param_value_size_ret) = sizeof(intptr_t);
- if (param_value != NULL) {
- *(intptr_t*) param_value =
- reinterpret_cast(amdContext->info().hDev_[amd::Context::D3D9DeviceVAKhrIdx]);
- }
- return CL_SUCCESS;
+ if (param_value != NULL && param_value_size < sizeof(void*)) {
+ return CL_INVALID_VALUE;
+ }
+ const amd::Context* amdContext = as_amd(context);
+ if (!(amdContext->info().flags_ & amd::Context::D3D9DeviceVAKhr)) {
+ return CL_INVALID_VALUE;
+ }
+ *not_null(param_value_size_ret) = sizeof(intptr_t);
+ if (param_value != NULL) {
+ *(intptr_t*)param_value =
+ reinterpret_cast(amdContext->info().hDev_[amd::Context::D3D9DeviceVAKhrIdx]);
+ }
+ return CL_SUCCESS;
}
-#endif //_WIN32
+#endif //_WIN32
default:
- break;
- }
+ break;
+ }
- return CL_INVALID_VALUE;
+ return CL_INVALID_VALUE;
}
RUNTIME_EXIT
@@ -465,158 +439,151 @@ RUNTIME_EXIT
*
* \version 1.2r07
*/
-CL_API_ENTRY void* CL_API_CALL clGetExtensionFunctionAddressForPlatform(
- cl_platform_id platform,
- const char *funcname)
-{
- if (platform != NULL && platform != AMD_PLATFORM) {
- return NULL;
- }
+CL_API_ENTRY void* CL_API_CALL clGetExtensionFunctionAddressForPlatform(cl_platform_id platform,
+ const char* funcname) {
+ if (platform != NULL && platform != AMD_PLATFORM) {
+ return NULL;
+ }
- return clGetExtensionFunctionAddress(funcname);
+ return clGetExtensionFunctionAddress(funcname);
}
-CL_API_ENTRY void* CL_API_CALL
-clGetExtensionFunctionAddress(const char* func_name)
-{
-#define CL_EXTENSION_ENTRYPOINT_CHECK(name) \
- if (!strcmp(func_name, #name)) return reinterpret_cast(name);
-#define CL_EXTENSION_ENTRYPOINT_CHECK2(name1,name2) \
- if (!strcmp(func_name, #name1)) return reinterpret_cast(name2);
+CL_API_ENTRY void* CL_API_CALL clGetExtensionFunctionAddress(const char* func_name) {
+#define CL_EXTENSION_ENTRYPOINT_CHECK(name) \
+ if (!strcmp(func_name, #name)) return reinterpret_cast(name);
+#define CL_EXTENSION_ENTRYPOINT_CHECK2(name1, name2) \
+ if (!strcmp(func_name, #name1)) return reinterpret_cast(name2);
- switch (func_name[2]) {
+ switch (func_name[2]) {
case 'C':
- CL_EXTENSION_ENTRYPOINT_CHECK(clCreateEventFromGLsyncKHR);
- CL_EXTENSION_ENTRYPOINT_CHECK(clCreatePerfCounterAMD);
- CL_EXTENSION_ENTRYPOINT_CHECK(clCreateThreadTraceAMD);
- CL_EXTENSION_ENTRYPOINT_CHECK(clCreateFromGLBuffer);
- CL_EXTENSION_ENTRYPOINT_CHECK(clCreateFromGLTexture2D);
- CL_EXTENSION_ENTRYPOINT_CHECK(clCreateFromGLTexture3D);
- CL_EXTENSION_ENTRYPOINT_CHECK(clCreateFromGLRenderbuffer);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clCreateEventFromGLsyncKHR);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clCreatePerfCounterAMD);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clCreateThreadTraceAMD);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clCreateFromGLBuffer);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clCreateFromGLTexture2D);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clCreateFromGLTexture3D);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clCreateFromGLRenderbuffer);
#ifdef _WIN32
- CL_EXTENSION_ENTRYPOINT_CHECK(clCreateFromD3D10BufferKHR);
- CL_EXTENSION_ENTRYPOINT_CHECK(clCreateFromD3D10Texture2DKHR);
- CL_EXTENSION_ENTRYPOINT_CHECK(clCreateFromD3D10Texture3DKHR);
- CL_EXTENSION_ENTRYPOINT_CHECK(clCreateFromDX9MediaSurfaceKHR);
-#endif //_WIN32
+ CL_EXTENSION_ENTRYPOINT_CHECK(clCreateFromD3D10BufferKHR);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clCreateFromD3D10Texture2DKHR);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clCreateFromD3D10Texture3DKHR);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clCreateFromDX9MediaSurfaceKHR);
+#endif //_WIN32
#ifdef cl_ext_device_fission
- CL_EXTENSION_ENTRYPOINT_CHECK(clCreateSubDevicesEXT);
-#endif // cl_ext_device_fission
- CL_EXTENSION_ENTRYPOINT_CHECK(clCreateKeyAMD);
- CL_EXTENSION_ENTRYPOINT_CHECK(clConvertImageAMD);
- CL_EXTENSION_ENTRYPOINT_CHECK(clCreateBufferFromImageAMD);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clCreateSubDevicesEXT);
+#endif // cl_ext_device_fission
+ CL_EXTENSION_ENTRYPOINT_CHECK(clCreateKeyAMD);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clConvertImageAMD);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clCreateBufferFromImageAMD);
#if cl_khr_il_program
- CL_EXTENSION_ENTRYPOINT_CHECK(clCreateProgramWithILKHR);
-#endif // cl_khr_il_program
+ CL_EXTENSION_ENTRYPOINT_CHECK(clCreateProgramWithILKHR);
+#endif // cl_khr_il_program
#if cl_amd_liquid_flash
- CL_EXTENSION_ENTRYPOINT_CHECK(clCreateSsgFileObjectAMD);
-#endif // cl_amd_liquid_flash
- break;
+ CL_EXTENSION_ENTRYPOINT_CHECK(clCreateSsgFileObjectAMD);
+#endif // cl_amd_liquid_flash
+ break;
case 'D':
- break;
+ break;
case 'E':
- CL_EXTENSION_ENTRYPOINT_CHECK(clEnqueueBeginPerfCounterAMD);
- CL_EXTENSION_ENTRYPOINT_CHECK(clEnqueueEndPerfCounterAMD);
- CL_EXTENSION_ENTRYPOINT_CHECK(clEnqueueAcquireGLObjects);
- CL_EXTENSION_ENTRYPOINT_CHECK(clEnqueueReleaseGLObjects);
- CL_EXTENSION_ENTRYPOINT_CHECK(clEnqueueBindThreadTraceBufferAMD);
- CL_EXTENSION_ENTRYPOINT_CHECK(clEnqueueThreadTraceCommandAMD);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clEnqueueBeginPerfCounterAMD);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clEnqueueEndPerfCounterAMD);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clEnqueueAcquireGLObjects);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clEnqueueReleaseGLObjects);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clEnqueueBindThreadTraceBufferAMD);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clEnqueueThreadTraceCommandAMD);
#ifdef _WIN32
- CL_EXTENSION_ENTRYPOINT_CHECK(clEnqueueAcquireD3D10ObjectsKHR);
- CL_EXTENSION_ENTRYPOINT_CHECK(clEnqueueReleaseD3D10ObjectsKHR);
- CL_EXTENSION_ENTRYPOINT_CHECK(clEnqueueAcquireDX9MediaSurfacesKHR);
- CL_EXTENSION_ENTRYPOINT_CHECK(clEnqueueReleaseDX9MediaSurfacesKHR);
-#endif //_WIN32
- CL_EXTENSION_ENTRYPOINT_CHECK(clEnqueueWaitSignalAMD);
- CL_EXTENSION_ENTRYPOINT_CHECK(clEnqueueWriteSignalAMD);
- CL_EXTENSION_ENTRYPOINT_CHECK(clEnqueueMakeBuffersResidentAMD);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clEnqueueAcquireD3D10ObjectsKHR);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clEnqueueReleaseD3D10ObjectsKHR);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clEnqueueAcquireDX9MediaSurfacesKHR);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clEnqueueReleaseDX9MediaSurfacesKHR);
+#endif //_WIN32
+ CL_EXTENSION_ENTRYPOINT_CHECK(clEnqueueWaitSignalAMD);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clEnqueueWriteSignalAMD);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clEnqueueMakeBuffersResidentAMD);
#if cl_amd_liquid_flash
- CL_EXTENSION_ENTRYPOINT_CHECK(clEnqueueReadSsgFileAMD);
- CL_EXTENSION_ENTRYPOINT_CHECK(clEnqueueWriteSsgFileAMD);
-#endif // cl_amd_liquid_flash
- break;
+ CL_EXTENSION_ENTRYPOINT_CHECK(clEnqueueReadSsgFileAMD);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clEnqueueWriteSsgFileAMD);
+#endif // cl_amd_liquid_flash
+ break;
case 'G':
- CL_EXTENSION_ENTRYPOINT_CHECK(clGetKernelInfoAMD);
- CL_EXTENSION_ENTRYPOINT_CHECK(clGetPerfCounterInfoAMD);
- CL_EXTENSION_ENTRYPOINT_CHECK(clGetGLObjectInfo);
- CL_EXTENSION_ENTRYPOINT_CHECK(clGetGLTextureInfo);
- CL_EXTENSION_ENTRYPOINT_CHECK(clGetGLContextInfoKHR);
- CL_EXTENSION_ENTRYPOINT_CHECK(clGetThreadTraceInfoAMD);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clGetKernelInfoAMD);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clGetPerfCounterInfoAMD);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clGetGLObjectInfo);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clGetGLTextureInfo);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clGetGLContextInfoKHR);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clGetThreadTraceInfoAMD);
#ifdef _WIN32
- CL_EXTENSION_ENTRYPOINT_CHECK(clGetDeviceIDsFromD3D10KHR);
- CL_EXTENSION_ENTRYPOINT_CHECK(clGetDeviceIDsFromDX9MediaAdapterKHR);
- CL_EXTENSION_ENTRYPOINT_CHECK(clGetPlaneFromImageAMD);
-#endif //_WIN32
- CL_EXTENSION_ENTRYPOINT_CHECK(clGetKernelSubGroupInfoKHR);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clGetDeviceIDsFromD3D10KHR);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clGetDeviceIDsFromDX9MediaAdapterKHR);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clGetPlaneFromImageAMD);
+#endif //_WIN32
+ CL_EXTENSION_ENTRYPOINT_CHECK(clGetKernelSubGroupInfoKHR);
#if cl_amd_liquid_flash
- CL_EXTENSION_ENTRYPOINT_CHECK(clGetSsgFileObjectInfoAMD);
-#endif // cl_amd_liquid_flash
- break;
+ CL_EXTENSION_ENTRYPOINT_CHECK(clGetSsgFileObjectInfoAMD);
+#endif // cl_amd_liquid_flash
+ break;
case 'H':
#ifdef _WIN32
- CL_EXTENSION_ENTRYPOINT_CHECK(clHwDbgSetCallBackFunctionsAMD);
- CL_EXTENSION_ENTRYPOINT_CHECK(clHwDbgSetCallBackArgumentsAMD);
- CL_EXTENSION_ENTRYPOINT_CHECK(clHwDbgFlushCacheAMD);
- CL_EXTENSION_ENTRYPOINT_CHECK(clHwDbgSetExceptionPolicyAMD);
- CL_EXTENSION_ENTRYPOINT_CHECK(clHwDbgGetExceptionPolicyAMD);
- CL_EXTENSION_ENTRYPOINT_CHECK(clHwDbgSetKernelExecutionModeAMD);
- CL_EXTENSION_ENTRYPOINT_CHECK(clHwDbgGetKernelExecutionModeAMD);
- CL_EXTENSION_ENTRYPOINT_CHECK(clHwDbgCreateEventAMD);
- CL_EXTENSION_ENTRYPOINT_CHECK(clHwDbgWaitEventAMD);
- CL_EXTENSION_ENTRYPOINT_CHECK(clHwDbgDestroyEventAMD);
- CL_EXTENSION_ENTRYPOINT_CHECK(clHwDbgRegisterDebuggerAMD);
- CL_EXTENSION_ENTRYPOINT_CHECK(clHwDbgUnregisterDebuggerAMD);
- CL_EXTENSION_ENTRYPOINT_CHECK(clHwDbgSetAclBinaryAMD);
- CL_EXTENSION_ENTRYPOINT_CHECK(clHwDbgWaveControlAMD);
- CL_EXTENSION_ENTRYPOINT_CHECK(clHwDbgAddressWatchAMD);
- CL_EXTENSION_ENTRYPOINT_CHECK(clHwDbgGetAqlPacketInfoAMD);
- CL_EXTENSION_ENTRYPOINT_CHECK(clHwDbgGetDispatchDebugInfoAMD);
- CL_EXTENSION_ENTRYPOINT_CHECK(clHwDbgMapKernelCodeAMD);
- CL_EXTENSION_ENTRYPOINT_CHECK(clHwDbgUnmapKernelCodeAMD);
- CL_EXTENSION_ENTRYPOINT_CHECK(clHwDbgMapScratchRingAMD);
- CL_EXTENSION_ENTRYPOINT_CHECK(clHwDbgUnmapScratchRingAMD);
- CL_EXTENSION_ENTRYPOINT_CHECK(clHwDbgGetKernelParamMemAMD);
- CL_EXTENSION_ENTRYPOINT_CHECK(clHwDbgSetGlobalMemoryAMD);
- CL_EXTENSION_ENTRYPOINT_CHECK(clHwDbgInstallTrapAMD);
-#endif //_WIN32
- break;
+ CL_EXTENSION_ENTRYPOINT_CHECK(clHwDbgSetCallBackFunctionsAMD);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clHwDbgSetCallBackArgumentsAMD);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clHwDbgFlushCacheAMD);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clHwDbgSetExceptionPolicyAMD);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clHwDbgGetExceptionPolicyAMD);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clHwDbgSetKernelExecutionModeAMD);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clHwDbgGetKernelExecutionModeAMD);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clHwDbgCreateEventAMD);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clHwDbgWaitEventAMD);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clHwDbgDestroyEventAMD);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clHwDbgRegisterDebuggerAMD);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clHwDbgUnregisterDebuggerAMD);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clHwDbgSetAclBinaryAMD);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clHwDbgWaveControlAMD);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clHwDbgAddressWatchAMD);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clHwDbgGetAqlPacketInfoAMD);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clHwDbgGetDispatchDebugInfoAMD);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clHwDbgMapKernelCodeAMD);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clHwDbgUnmapKernelCodeAMD);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clHwDbgMapScratchRingAMD);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clHwDbgUnmapScratchRingAMD);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clHwDbgGetKernelParamMemAMD);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clHwDbgSetGlobalMemoryAMD);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clHwDbgInstallTrapAMD);
+#endif //_WIN32
+ break;
case 'I':
- CL_EXTENSION_ENTRYPOINT_CHECK(clIcdGetPlatformIDsKHR);
- break;
+ CL_EXTENSION_ENTRYPOINT_CHECK(clIcdGetPlatformIDsKHR);
+ break;
case 'O':
- CL_EXTENSION_ENTRYPOINT_CHECK(clObjectGetValueForKeyAMD);
- CL_EXTENSION_ENTRYPOINT_CHECK(clObjectSetValueForKeyAMD);
- break;
+ CL_EXTENSION_ENTRYPOINT_CHECK(clObjectGetValueForKeyAMD);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clObjectSetValueForKeyAMD);
+ break;
case 'R':
- CL_EXTENSION_ENTRYPOINT_CHECK(clReleasePerfCounterAMD);
- CL_EXTENSION_ENTRYPOINT_CHECK(clRetainPerfCounterAMD);
- CL_EXTENSION_ENTRYPOINT_CHECK(clReleaseThreadTraceAMD);
- CL_EXTENSION_ENTRYPOINT_CHECK(clRetainThreadTraceAMD);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clReleasePerfCounterAMD);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clRetainPerfCounterAMD);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clReleaseThreadTraceAMD);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clRetainThreadTraceAMD);
#ifdef cl_ext_device_fission
- CL_EXTENSION_ENTRYPOINT_CHECK(clRetainDeviceEXT);
- CL_EXTENSION_ENTRYPOINT_CHECK(clReleaseDeviceEXT);
-#endif // cl_ext_device_fission
+ CL_EXTENSION_ENTRYPOINT_CHECK(clRetainDeviceEXT);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clReleaseDeviceEXT);
+#endif // cl_ext_device_fission
#if cl_amd_liquid_flash
- CL_EXTENSION_ENTRYPOINT_CHECK(clRetainSsgFileObjectAMD);
- CL_EXTENSION_ENTRYPOINT_CHECK(clReleaseSsgFileObjectAMD);
-#endif // cl_amd_liquid_flash
- break;
+ CL_EXTENSION_ENTRYPOINT_CHECK(clRetainSsgFileObjectAMD);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clReleaseSsgFileObjectAMD);
+#endif // cl_amd_liquid_flash
+ break;
case 'S':
- CL_EXTENSION_ENTRYPOINT_CHECK(clSetThreadTraceParamAMD);
- break;
+ CL_EXTENSION_ENTRYPOINT_CHECK(clSetThreadTraceParamAMD);
+ break;
case 'U':
- CL_EXTENSION_ENTRYPOINT_CHECK(clUnloadPlatformAMD);
+ CL_EXTENSION_ENTRYPOINT_CHECK(clUnloadPlatformAMD);
default:
- break;
- }
+ break;
+ }
- return NULL;
+ return NULL;
}
-RUNTIME_ENTRY(cl_int, clTerminateContextKHR, (cl_context context))
-{
- return CL_INVALID_CONTEXT;
-}
+RUNTIME_ENTRY(cl_int, clTerminateContextKHR, (cl_context context)) { return CL_INVALID_CONTEXT; }
RUNTIME_EXIT
diff --git a/opencl/api/opencl/amdocl/cl_counter.cpp b/opencl/api/opencl/amdocl/cl_counter.cpp
index 3153055f60..9c29b0ed78 100644
--- a/opencl/api/opencl/amdocl/cl_counter.cpp
+++ b/opencl/api/opencl/amdocl/cl_counter.cpp
@@ -25,14 +25,11 @@
*
* \version 1.1r18
*/
-RUNTIME_ENTRY_RET(cl_counter_amd, clCreateCounterAMD, (
- cl_context context,
- cl_counter_flags_amd flags,
- cl_uint value,
- cl_int * errcode_ret))
-{
- *not_null(errcode_ret) = CL_INVALID_CONTEXT;
- return (cl_counter_amd)0;
+RUNTIME_ENTRY_RET(cl_counter_amd, clCreateCounterAMD,
+ (cl_context context, cl_counter_flags_amd flags, cl_uint value,
+ cl_int* errcode_ret)) {
+ *not_null(errcode_ret) = CL_INVALID_CONTEXT;
+ return (cl_counter_amd)0;
}
RUNTIME_EXIT
@@ -40,14 +37,10 @@ RUNTIME_EXIT
*
* \version 1.1r18
*/
-RUNTIME_ENTRY(cl_int, clGetCounterInfoAMD, (
- cl_counter_amd counter,
- cl_counter_info_amd param_name,
- size_t param_value_size,
- void * param_value,
- size_t * param_value_size_ret))
-{
- return CL_INVALID_COUNTER_AMD;
+RUNTIME_ENTRY(cl_int, clGetCounterInfoAMD,
+ (cl_counter_amd counter, cl_counter_info_amd param_name, size_t param_value_size,
+ void* param_value, size_t* param_value_size_ret)) {
+ return CL_INVALID_COUNTER_AMD;
}
RUNTIME_EXIT
@@ -60,13 +53,12 @@ RUNTIME_EXIT
*
* \version 1.1r18
*/
-RUNTIME_ENTRY(cl_int, clRetainCounterAMD, (cl_counter_amd counter))
-{
- if (!is_valid(counter)) {
- return CL_INVALID_COUNTER_AMD;
- }
- as_amd(counter)->retain();
- return CL_SUCCESS;
+RUNTIME_ENTRY(cl_int, clRetainCounterAMD, (cl_counter_amd counter)) {
+ if (!is_valid(counter)) {
+ return CL_INVALID_COUNTER_AMD;
+ }
+ as_amd(counter)->retain();
+ return CL_SUCCESS;
}
RUNTIME_EXIT
@@ -79,13 +71,12 @@ RUNTIME_EXIT
*
* \version 1.1r18
*/
-RUNTIME_ENTRY(cl_int, clReleaseCounterAMD, (cl_counter_amd counter))
-{
- if (!is_valid(counter)) {
- return CL_INVALID_COUNTER_AMD;
- }
- as_amd(counter)->release();
- return CL_SUCCESS;
+RUNTIME_ENTRY(cl_int, clReleaseCounterAMD, (cl_counter_amd counter)) {
+ if (!is_valid(counter)) {
+ return CL_INVALID_COUNTER_AMD;
+ }
+ as_amd(counter)->release();
+ return CL_SUCCESS;
}
RUNTIME_EXIT
@@ -93,16 +84,11 @@ RUNTIME_EXIT
*
* \version 1.1r18
*/
-RUNTIME_ENTRY(cl_int, clEnqueueReadCounterAMD, (
- cl_command_queue command_queue,
- cl_counter_amd counter,
- cl_bool blocking_read,
- cl_uint * value,
- cl_uint num_events_in_wait_list,
- const cl_event * event_wait_list,
- cl_event * event))
-{
- return CL_INVALID_COUNTER_AMD;
+RUNTIME_ENTRY(cl_int, clEnqueueReadCounterAMD,
+ (cl_command_queue command_queue, cl_counter_amd counter, cl_bool blocking_read,
+ cl_uint* value, cl_uint num_events_in_wait_list, const cl_event* event_wait_list,
+ cl_event* event)) {
+ return CL_INVALID_COUNTER_AMD;
}
RUNTIME_EXIT
@@ -110,16 +96,11 @@ RUNTIME_EXIT
*
* \version 1.1r18
*/
-RUNTIME_ENTRY(cl_int, clEnqueueWriteCounterAMD, (
- cl_command_queue command_queue,
- cl_counter_amd counter,
- cl_bool blocking_write,
- cl_uint value,
- cl_uint num_events_in_wait_list,
- const cl_event * event_wait_list,
- cl_event * event))
-{
- return CL_INVALID_COUNTER_AMD;
+RUNTIME_ENTRY(cl_int, clEnqueueWriteCounterAMD,
+ (cl_command_queue command_queue, cl_counter_amd counter, cl_bool blocking_write,
+ cl_uint value, cl_uint num_events_in_wait_list, const cl_event* event_wait_list,
+ cl_event* event)) {
+ return CL_INVALID_COUNTER_AMD;
}
RUNTIME_EXIT
@@ -127,4 +108,4 @@ RUNTIME_EXIT
* @}
*/
-#endif // cl_amd_atomic_counters
+#endif // cl_amd_atomic_counters
diff --git a/opencl/api/opencl/amdocl/cl_d3d10.cpp b/opencl/api/opencl/amdocl/cl_d3d10.cpp
index e0063bc7b2..0003cf2419 100644
--- a/opencl/api/opencl/amdocl/cl_d3d10.cpp
+++ b/opencl/api/opencl/amdocl/cl_d3d10.cpp
@@ -34,130 +34,121 @@
* @{
*/
-RUNTIME_ENTRY(cl_int, 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_int errcode;
- ID3D10Device* d3d10_device = NULL;
- cl_device_id* gpu_devices;
- cl_uint num_gpu_devices = 0;
- bool create_d3d10Device = false;
- static const bool VALIDATE_ONLY = true;
- HMODULE d3d10Module = NULL;
+RUNTIME_ENTRY(cl_int, 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_int errcode;
+ ID3D10Device* d3d10_device = NULL;
+ cl_device_id* gpu_devices;
+ cl_uint num_gpu_devices = 0;
+ bool create_d3d10Device = false;
+ static const bool VALIDATE_ONLY = true;
+ HMODULE d3d10Module = NULL;
- if (platform != NULL && platform != AMD_PLATFORM) {
- LogWarning("\"platrform\" is not a valid AMD platform");
- return CL_INVALID_PLATFORM;
- }
- if(((num_entries > 0 || num_devices == NULL) && devices == NULL)
- || (num_entries == 0 && devices != NULL)) {
- return CL_INVALID_VALUE;
- }
- // Get GPU devices
- errcode = clGetDeviceIDs(NULL, CL_DEVICE_TYPE_GPU, 0, NULL, &num_gpu_devices);
- if (errcode != CL_SUCCESS && errcode != CL_DEVICE_NOT_FOUND) {
- return CL_INVALID_VALUE;
- }
+ if (platform != NULL && platform != AMD_PLATFORM) {
+ LogWarning("\"platrform\" is not a valid AMD platform");
+ return CL_INVALID_PLATFORM;
+ }
+ if (((num_entries > 0 || num_devices == NULL) && devices == NULL) ||
+ (num_entries == 0 && devices != NULL)) {
+ return CL_INVALID_VALUE;
+ }
+ // Get GPU devices
+ errcode = clGetDeviceIDs(NULL, CL_DEVICE_TYPE_GPU, 0, NULL, &num_gpu_devices);
+ if (errcode != CL_SUCCESS && errcode != CL_DEVICE_NOT_FOUND) {
+ return CL_INVALID_VALUE;
+ }
- if (!num_gpu_devices) {
- *not_null(num_devices) = 0;
- return CL_DEVICE_NOT_FOUND;
- }
+ if (!num_gpu_devices) {
+ *not_null(num_devices) = 0;
+ return CL_DEVICE_NOT_FOUND;
+ }
- switch(d3d_device_source)
- {
+ switch (d3d_device_source) {
case CL_D3D10_DEVICE_KHR:
- d3d10_device = static_cast(d3d_object);
- break;
- case CL_D3D10_DXGI_ADAPTER_KHR:
- {
- typedef HRESULT (WINAPI* LPD3D10CREATEDEVICE)(IDXGIAdapter*, D3D10_DRIVER_TYPE,
- HMODULE, UINT, UINT32, ID3D10Device**);
- static LPD3D10CREATEDEVICE dynamicD3D10CreateDevice = NULL;
+ d3d10_device = static_cast(d3d_object);
+ break;
+ case CL_D3D10_DXGI_ADAPTER_KHR: {
+ typedef HRESULT(WINAPI * LPD3D10CREATEDEVICE)(IDXGIAdapter*, D3D10_DRIVER_TYPE, HMODULE, UINT,
+ UINT32, ID3D10Device**);
+ static LPD3D10CREATEDEVICE dynamicD3D10CreateDevice = NULL;
- d3d10Module = LoadLibrary("D3D10.dll");
- if (d3d10Module == NULL) {
- return CL_INVALID_PLATFORM;
- }
+ d3d10Module = LoadLibrary("D3D10.dll");
+ if (d3d10Module == NULL) {
+ return CL_INVALID_PLATFORM;
+ }
- dynamicD3D10CreateDevice = (LPD3D10CREATEDEVICE)GetProcAddress(d3d10Module, "D3D10CreateDevice");
+ dynamicD3D10CreateDevice =
+ (LPD3D10CREATEDEVICE)GetProcAddress(d3d10Module, "D3D10CreateDevice");
- IDXGIAdapter* dxgi_adapter = static_cast(d3d_object);
- HRESULT hr = dynamicD3D10CreateDevice(dxgi_adapter, D3D10_DRIVER_TYPE_HARDWARE,
- NULL, 0, D3D10_SDK_VERSION, &d3d10_device);
- if (SUCCEEDED(hr) && (NULL != d3d10_device)) {
- create_d3d10Device = true;
- } else {
- FreeLibrary(d3d10Module);
- return CL_INVALID_VALUE;
- }
- }
- break;
- default:
- LogWarning("\"d3d_device_source\" is invalid");
- return CL_INVALID_VALUE;
- }
-
- switch(d3d_device_set) {
- case CL_PREFERRED_DEVICES_FOR_D3D10_KHR:
- case CL_ALL_DEVICES_FOR_D3D10_KHR:
- {
- gpu_devices = (cl_device_id *) alloca(num_gpu_devices * sizeof(cl_device_id));
-
- errcode = clGetDeviceIDs(NULL, CL_DEVICE_TYPE_GPU, num_gpu_devices, gpu_devices, NULL);
- if (errcode != CL_SUCCESS) {
- break;
- }
-
- void * external_device[amd::Context::DeviceFlagIdx::LastDeviceFlagIdx] = {};
- external_device[amd::Context::DeviceFlagIdx::D3D10DeviceKhrIdx] = d3d10_device;
-
- std::vector compatible_devices;
- for (cl_uint i = 0; i < num_gpu_devices; ++i) {
- cl_device_id device = gpu_devices[i];
- if (is_valid(device) &&
- as_amd(device)->bindExternalDevice(amd::Context::Flags::D3D10DeviceKhr,
- external_device, NULL, VALIDATE_ONLY)) {
- compatible_devices.push_back(as_amd(device));
- }
- }
- if (compatible_devices.size() == 0) {
- *not_null(num_devices) = 0;
- errcode = CL_DEVICE_NOT_FOUND;
- break;
- }
-
- std::vector::iterator it = compatible_devices.begin();
- cl_uint compatible_count = std::min(num_entries, (cl_uint)compatible_devices.size());
-
- while (compatible_count--) {
- *devices++ = as_cl(*it++);
- --num_entries;
- }
- while (num_entries--) {
- *devices++ = (cl_device_id) 0;
- }
-
- *not_null(num_devices) = (cl_uint)compatible_devices.size();
- }
- break;
-
- default:
- LogWarning("\"d3d_device_set\" is invalid");
- errcode = CL_INVALID_VALUE;
- }
-
- if (create_d3d10Device) {
- d3d10_device->Release();
+ IDXGIAdapter* dxgi_adapter = static_cast(d3d_object);
+ HRESULT hr = dynamicD3D10CreateDevice(dxgi_adapter, D3D10_DRIVER_TYPE_HARDWARE, NULL, 0,
+ D3D10_SDK_VERSION, &d3d10_device);
+ if (SUCCEEDED(hr) && (NULL != d3d10_device)) {
+ create_d3d10Device = true;
+ } else {
FreeLibrary(d3d10Module);
- }
- return errcode;
+ return CL_INVALID_VALUE;
+ }
+ } break;
+ default:
+ LogWarning("\"d3d_device_source\" is invalid");
+ return CL_INVALID_VALUE;
+ }
+
+ switch (d3d_device_set) {
+ case CL_PREFERRED_DEVICES_FOR_D3D10_KHR:
+ case CL_ALL_DEVICES_FOR_D3D10_KHR: {
+ gpu_devices = (cl_device_id*)alloca(num_gpu_devices * sizeof(cl_device_id));
+
+ errcode = clGetDeviceIDs(NULL, CL_DEVICE_TYPE_GPU, num_gpu_devices, gpu_devices, NULL);
+ if (errcode != CL_SUCCESS) {
+ break;
+ }
+
+ void* external_device[amd::Context::DeviceFlagIdx::LastDeviceFlagIdx] = {};
+ external_device[amd::Context::DeviceFlagIdx::D3D10DeviceKhrIdx] = d3d10_device;
+
+ std::vector compatible_devices;
+ for (cl_uint i = 0; i < num_gpu_devices; ++i) {
+ cl_device_id device = gpu_devices[i];
+ if (is_valid(device) &&
+ as_amd(device)->bindExternalDevice(amd::Context::Flags::D3D10DeviceKhr, external_device,
+ NULL, VALIDATE_ONLY)) {
+ compatible_devices.push_back(as_amd(device));
+ }
+ }
+ if (compatible_devices.size() == 0) {
+ *not_null(num_devices) = 0;
+ errcode = CL_DEVICE_NOT_FOUND;
+ break;
+ }
+
+ std::vector::iterator it = compatible_devices.begin();
+ cl_uint compatible_count = std::min(num_entries, (cl_uint)compatible_devices.size());
+
+ while (compatible_count--) {
+ *devices++ = as_cl(*it++);
+ --num_entries;
+ }
+ while (num_entries--) {
+ *devices++ = (cl_device_id)0;
+ }
+
+ *not_null(num_devices) = (cl_uint)compatible_devices.size();
+ } break;
+
+ default:
+ LogWarning("\"d3d_device_set\" is invalid");
+ errcode = CL_INVALID_VALUE;
+ }
+
+ if (create_d3d10Device) {
+ d3d10_device->Release();
+ FreeLibrary(d3d10Module);
+ }
+ return errcode;
}
RUNTIME_EXIT
@@ -190,37 +181,31 @@ RUNTIME_EXIT
* \version 1.0r33?
*/
-RUNTIME_ENTRY_RET(cl_mem, clCreateFromD3D10BufferKHR, (
- cl_context context,
- cl_mem_flags flags,
- ID3D10Buffer* pD3DResource,
- cl_int* errcode_ret))
-{
- cl_mem clMemObj = NULL;
+RUNTIME_ENTRY_RET(cl_mem, clCreateFromD3D10BufferKHR,
+ (cl_context context, cl_mem_flags flags, ID3D10Buffer* pD3DResource,
+ cl_int* errcode_ret)) {
+ cl_mem clMemObj = NULL;
- if(!is_valid(context)) {
- *not_null(errcode_ret) = CL_INVALID_CONTEXT;
- LogWarning("invalid parameter \"context\"");
- return clMemObj;
- }
- if(!flags) flags = CL_MEM_READ_WRITE;
- if(!(((flags & CL_MEM_READ_ONLY) == CL_MEM_READ_ONLY)
- || ((flags & CL_MEM_WRITE_ONLY) == CL_MEM_WRITE_ONLY)
- || ((flags & CL_MEM_READ_WRITE) == CL_MEM_READ_WRITE))) {
- *not_null(errcode_ret) = CL_INVALID_VALUE;
- LogWarning("invalid parameter \"flags\"");
- return clMemObj;
- }
- if(!pD3DResource) {
- *not_null(errcode_ret) = CL_INVALID_VALUE;
- LogWarning("parameter \"pD3DResource\" is a NULL pointer");
- return clMemObj;
- }
- return(amd::clCreateBufferFromD3D10ResourceAMD(
- *as_amd(context),
- flags,
- pD3DResource,
- errcode_ret));
+ if (!is_valid(context)) {
+ *not_null(errcode_ret) = CL_INVALID_CONTEXT;
+ LogWarning("invalid parameter \"context\"");
+ return clMemObj;
+ }
+ if (!flags) flags = CL_MEM_READ_WRITE;
+ if (!(((flags & CL_MEM_READ_ONLY) == CL_MEM_READ_ONLY) ||
+ ((flags & CL_MEM_WRITE_ONLY) == CL_MEM_WRITE_ONLY) ||
+ ((flags & CL_MEM_READ_WRITE) == CL_MEM_READ_WRITE))) {
+ *not_null(errcode_ret) = CL_INVALID_VALUE;
+ LogWarning("invalid parameter \"flags\"");
+ return clMemObj;
+ }
+ if (!pD3DResource) {
+ *not_null(errcode_ret) = CL_INVALID_VALUE;
+ LogWarning("parameter \"pD3DResource\" is a NULL pointer");
+ return clMemObj;
+ }
+ return (
+ amd::clCreateBufferFromD3D10ResourceAMD(*as_amd(context), flags, pD3DResource, errcode_ret));
}
RUNTIME_EXIT
@@ -270,67 +255,62 @@ RUNTIME_EXIT
*
* \version 1.0r48?
*/
-RUNTIME_ENTRY_RET(cl_mem, clCreateImageFromD3D10Resource, (
- cl_context context,
- cl_mem_flags flags,
- ID3D10Resource* pD3DResource,
- UINT subresource,
- int* errcode_ret,
- UINT dimension))
-{
- cl_mem clMemObj = NULL;
+RUNTIME_ENTRY_RET(cl_mem, clCreateImageFromD3D10Resource,
+ (cl_context context, cl_mem_flags flags, ID3D10Resource* pD3DResource,
+ UINT subresource, int* errcode_ret, UINT dimension)) {
+ cl_mem clMemObj = NULL;
- if(!is_valid(context)) {
- *not_null(errcode_ret) = CL_INVALID_CONTEXT;
- LogWarning("invalid parameter \"context\"");
- return clMemObj;
- }
- if(!flags) flags = CL_MEM_READ_WRITE;
- if(!(((flags & CL_MEM_READ_ONLY) == CL_MEM_READ_ONLY)
- || ((flags & CL_MEM_WRITE_ONLY) == CL_MEM_WRITE_ONLY)
- || ((flags & CL_MEM_READ_WRITE) == CL_MEM_READ_WRITE))) {
- *not_null(errcode_ret) = CL_INVALID_VALUE;
- LogWarning("invalid parameter \"flags\"");
- return clMemObj;
- }
- if(!pD3DResource) {
- *not_null(errcode_ret) = CL_INVALID_VALUE;
- LogWarning("parameter \"pD3DResource\" is a NULL pointer");
- return clMemObj;
- }
+ if (!is_valid(context)) {
+ *not_null(errcode_ret) = CL_INVALID_CONTEXT;
+ LogWarning("invalid parameter \"context\"");
+ return clMemObj;
+ }
+ if (!flags) flags = CL_MEM_READ_WRITE;
+ if (!(((flags & CL_MEM_READ_ONLY) == CL_MEM_READ_ONLY) ||
+ ((flags & CL_MEM_WRITE_ONLY) == CL_MEM_WRITE_ONLY) ||
+ ((flags & CL_MEM_READ_WRITE) == CL_MEM_READ_WRITE))) {
+ *not_null(errcode_ret) = CL_INVALID_VALUE;
+ LogWarning("invalid parameter \"flags\"");
+ return clMemObj;
+ }
+ if (!pD3DResource) {
+ *not_null(errcode_ret) = CL_INVALID_VALUE;
+ LogWarning("parameter \"pD3DResource\" is a NULL pointer");
+ return clMemObj;
+ }
- // Verify context init'ed for interop
- ID3D10Device* pDev;
- pD3DResource->GetDevice(&pDev);
- if(pDev == NULL) {
- *not_null(errcode_ret) = CL_INVALID_D3D10_DEVICE_KHR;
- LogWarning("Cannot retrieve D3D10 device from D3D10 resource");
- return (cl_mem) 0;
- }
- pDev->Release();
- if (!((*as_amd(context)).info().flags_ & amd::Context::D3D10DeviceKhr)) {
- *not_null(errcode_ret) = CL_INVALID_CONTEXT;
- LogWarning("\"amdContext\" is not created from D3D10 device");
- return (cl_mem) 0;
- }
+ // Verify context init'ed for interop
+ ID3D10Device* pDev;
+ pD3DResource->GetDevice(&pDev);
+ if (pDev == NULL) {
+ *not_null(errcode_ret) = CL_INVALID_D3D10_DEVICE_KHR;
+ LogWarning("Cannot retrieve D3D10 device from D3D10 resource");
+ return (cl_mem)0;
+ }
+ pDev->Release();
+ if (!((*as_amd(context)).info().flags_ & amd::Context::D3D10DeviceKhr)) {
+ *not_null(errcode_ret) = CL_INVALID_CONTEXT;
+ LogWarning("\"amdContext\" is not created from D3D10 device");
+ return (cl_mem)0;
+ }
- // Check for image support
- const std::vector& devices = as_amd(context)->devices();
- bool supportPass = false;
- bool sizePass = false;
- std::vector::const_iterator it;
- for(it = devices.begin(); it != devices.end(); ++it) {
- if((*it)->info().imageSupport_) {
- supportPass = true;
- }
- }
- if(!supportPass) {
- *not_null(errcode_ret) = CL_INVALID_OPERATION;
- LogWarning("there are no devices in context to support images");
- return (cl_mem) 0;
+ // Check for image support
+ const std::vector& devices = as_amd(context)->devices();
+ bool supportPass = false;
+ bool sizePass = false;
+ std::vector::const_iterator it;
+ for (it = devices.begin(); it != devices.end(); ++it) {
+ if ((*it)->info().imageSupport_) {
+ supportPass = true;
}
+ }
+ if (!supportPass) {
+ *not_null(errcode_ret) = CL_INVALID_OPERATION;
+ LogWarning("there are no devices in context to support images");
+ return (cl_mem)0;
+ }
- switch(dimension) {
+ switch (dimension) {
#if 0
case 1:
return(amd::clCreateImage1DFromD3D10ResourceAMD(
@@ -339,27 +319,19 @@ RUNTIME_ENTRY_RET(cl_mem, clCreateImageFromD3D10Resource, (
pD3DResource,
subresource,
errcode_ret));
-#endif //0
+#endif // 0
case 2:
- return(amd::clCreateImage2DFromD3D10ResourceAMD(
- *as_amd(context),
- flags,
- pD3DResource,
- subresource,
- errcode_ret));
+ return (amd::clCreateImage2DFromD3D10ResourceAMD(*as_amd(context), flags, pD3DResource,
+ subresource, errcode_ret));
case 3:
- return(amd::clCreateImage3DFromD3D10ResourceAMD(
- *as_amd(context),
- flags,
- pD3DResource,
- subresource,
- errcode_ret));
+ return (amd::clCreateImage3DFromD3D10ResourceAMD(*as_amd(context), flags, pD3DResource,
+ subresource, errcode_ret));
default:
- break;
- }
+ break;
+ }
- *not_null(errcode_ret) = CL_INVALID_D3D10_RESOURCE_KHR;
- return (cl_mem) 0;
+ *not_null(errcode_ret) = CL_INVALID_D3D10_RESOURCE_KHR;
+ return (cl_mem)0;
}
RUNTIME_EXIT
@@ -367,15 +339,10 @@ RUNTIME_EXIT
* \addtogroup clCreateFromD3D10Texture2DKHR
* @{
*/
-RUNTIME_ENTRY_RET(cl_mem, clCreateFromD3D10Texture2DKHR, (
- cl_context context,
- cl_mem_flags flags,
- ID3D10Texture2D* resource,
- UINT subresource,
- cl_int* errcode_ret))
-{
- return clCreateImageFromD3D10Resource(context, flags, resource,
- subresource, errcode_ret, 2);
+RUNTIME_ENTRY_RET(cl_mem, clCreateFromD3D10Texture2DKHR,
+ (cl_context context, cl_mem_flags flags, ID3D10Texture2D* resource,
+ UINT subresource, cl_int* errcode_ret)) {
+ return clCreateImageFromD3D10Resource(context, flags, resource, subresource, errcode_ret, 2);
}
RUNTIME_EXIT
@@ -383,15 +350,10 @@ RUNTIME_EXIT
* \addtogroup clCreateFromD3D10Texture3DKHR
* @{
*/
-RUNTIME_ENTRY_RET(cl_mem, clCreateFromD3D10Texture3DKHR, (
- cl_context context,
- cl_mem_flags flags,
- ID3D10Texture3D* resource,
- UINT subresource,
- cl_int* errcode_ret))
-{
- return clCreateImageFromD3D10Resource(context, flags, resource,
- subresource, errcode_ret, 3);
+RUNTIME_ENTRY_RET(cl_mem, clCreateFromD3D10Texture3DKHR,
+ (cl_context context, cl_mem_flags flags, ID3D10Texture3D* resource,
+ UINT subresource, cl_int* errcode_ret)) {
+ return clCreateImageFromD3D10Resource(context, flags, resource, subresource, errcode_ret, 3);
}
RUNTIME_EXIT
@@ -399,17 +361,12 @@ RUNTIME_EXIT
* \addtogroup clEnqueueAcquireD3D10ObjectsKHR
* @{
*/
-RUNTIME_ENTRY(cl_int, 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))
-{
- return amd::clEnqueueAcquireExtObjectsAMD(command_queue, num_objects,
- mem_objects, num_events_in_wait_list, event_wait_list, event,
- CL_COMMAND_ACQUIRE_D3D10_OBJECTS_KHR);
+RUNTIME_ENTRY(cl_int, 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)) {
+ return amd::clEnqueueAcquireExtObjectsAMD(command_queue, num_objects, mem_objects,
+ num_events_in_wait_list, event_wait_list, event,
+ CL_COMMAND_ACQUIRE_D3D10_OBJECTS_KHR);
}
RUNTIME_EXIT
@@ -417,17 +374,12 @@ RUNTIME_EXIT
* \addtogroup clEnqueueReleaseD3D10ObjectsKHR
* @{
*/
-RUNTIME_ENTRY(cl_int, 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))
-{
- return amd::clEnqueueReleaseExtObjectsAMD(command_queue, num_objects,
- mem_objects, num_events_in_wait_list, event_wait_list, event,
- CL_COMMAND_RELEASE_D3D10_OBJECTS_KHR);
+RUNTIME_ENTRY(cl_int, 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)) {
+ return amd::clEnqueueReleaseExtObjectsAMD(command_queue, num_objects, mem_objects,
+ num_events_in_wait_list, event_wait_list, event,
+ CL_COMMAND_RELEASE_D3D10_OBJECTS_KHR);
}
RUNTIME_EXIT
@@ -437,15 +389,13 @@ RUNTIME_EXIT
// namespace amd
//
//
-namespace amd
-{
+namespace amd {
/*! @}
* \addtogroup CL-D3D10 interop helper functions
* @{
*/
-
//*******************************************************************
//
// Internal implementation of CL API functions
@@ -454,42 +404,36 @@ namespace amd
//
// clCreateBufferFromD3D10ResourceAMD
//
-cl_mem clCreateBufferFromD3D10ResourceAMD(
- Context& amdContext,
- cl_mem_flags flags,
- ID3D10Resource* pD3DResource,
- int* errcode_ret)
-{
- // Verify pD3DResource is a buffer
- D3D10_RESOURCE_DIMENSION rType;
- pD3DResource->GetType(&rType);
- if(rType != D3D10_RESOURCE_DIMENSION_BUFFER) {
- *not_null(errcode_ret) = CL_INVALID_D3D10_RESOURCE_KHR;
- return (cl_mem) 0;
- }
+cl_mem clCreateBufferFromD3D10ResourceAMD(Context& amdContext, cl_mem_flags flags,
+ ID3D10Resource* pD3DResource, int* errcode_ret) {
+ // Verify pD3DResource is a buffer
+ D3D10_RESOURCE_DIMENSION rType;
+ pD3DResource->GetType(&rType);
+ if (rType != D3D10_RESOURCE_DIMENSION_BUFFER) {
+ *not_null(errcode_ret) = CL_INVALID_D3D10_RESOURCE_KHR;
+ return (cl_mem)0;
+ }
- D3D10Object obj;
- int errcode = D3D10Object::initD3D10Object(amdContext, pD3DResource, 0, obj);
- if(CL_SUCCESS != errcode)
- {
- *not_null(errcode_ret) = errcode;
- return (cl_mem) 0;
- }
+ D3D10Object obj;
+ int errcode = D3D10Object::initD3D10Object(amdContext, pD3DResource, 0, obj);
+ if (CL_SUCCESS != errcode) {
+ *not_null(errcode_ret) = errcode;
+ return (cl_mem)0;
+ }
- BufferD3D10 *pBufferD3D10 = new (amdContext)
- BufferD3D10(amdContext, flags, obj);
- if(!pBufferD3D10) {
- *not_null(errcode_ret) = CL_OUT_OF_HOST_MEMORY;
- return (cl_mem) 0;
- }
- if (!pBufferD3D10->create()) {
- *not_null(errcode_ret) = CL_MEM_OBJECT_ALLOCATION_FAILURE;
- pBufferD3D10->release();
- return (cl_mem) 0;
- }
+ BufferD3D10* pBufferD3D10 = new (amdContext) BufferD3D10(amdContext, flags, obj);
+ if (!pBufferD3D10) {
+ *not_null(errcode_ret) = CL_OUT_OF_HOST_MEMORY;
+ return (cl_mem)0;
+ }
+ if (!pBufferD3D10->create()) {
+ *not_null(errcode_ret) = CL_MEM_OBJECT_ALLOCATION_FAILURE;
+ pBufferD3D10->release();
+ return (cl_mem)0;
+ }
- *not_null(errcode_ret) = CL_SUCCESS;
- return as_cl(pBufferD3D10);
+ *not_null(errcode_ret) = CL_SUCCESS;
+ return as_cl(pBufferD3D10);
}
#if 0
// There is no support for 1D images in the base imagee code
@@ -539,142 +483,125 @@ cl_mem clCreateImage1DFromD3D10ResourceAMD(
//
// clCreateImage2DFromD3D10ResourceAMD
//
-cl_mem clCreateImage2DFromD3D10ResourceAMD(
- Context& amdContext,
- cl_mem_flags flags,
- ID3D10Resource* pD3DResource,
- UINT subresource,
- int* errcode_ret)
-{
- // Verify the resource is a 2D texture
- D3D10_RESOURCE_DIMENSION rType;
- pD3DResource->GetType(&rType);
- if(rType != D3D10_RESOURCE_DIMENSION_TEXTURE2D) {
- *not_null(errcode_ret) = CL_INVALID_D3D10_RESOURCE_KHR;
- return (cl_mem) 0;
- }
+cl_mem clCreateImage2DFromD3D10ResourceAMD(Context& amdContext, cl_mem_flags flags,
+ ID3D10Resource* pD3DResource, UINT subresource,
+ int* errcode_ret) {
+ // Verify the resource is a 2D texture
+ D3D10_RESOURCE_DIMENSION rType;
+ pD3DResource->GetType(&rType);
+ if (rType != D3D10_RESOURCE_DIMENSION_TEXTURE2D) {
+ *not_null(errcode_ret) = CL_INVALID_D3D10_RESOURCE_KHR;
+ return (cl_mem)0;
+ }
- D3D10Object obj;
- int errcode = D3D10Object::initD3D10Object(amdContext, pD3DResource, subresource, obj);
- if(CL_SUCCESS != errcode)
- {
- *not_null(errcode_ret) = errcode;
- return (cl_mem) 0;
- }
+ D3D10Object obj;
+ int errcode = D3D10Object::initD3D10Object(amdContext, pD3DResource, subresource, obj);
+ if (CL_SUCCESS != errcode) {
+ *not_null(errcode_ret) = errcode;
+ return (cl_mem)0;
+ }
- Image2DD3D10 *pImage2DD3D10 = new (amdContext)
- Image2DD3D10(amdContext, flags, obj);
- if(!pImage2DD3D10) {
- *not_null(errcode_ret) = CL_OUT_OF_HOST_MEMORY;
- return (cl_mem) 0;
- }
- if (!pImage2DD3D10->create()) {
- *not_null(errcode_ret) = CL_MEM_OBJECT_ALLOCATION_FAILURE;
- pImage2DD3D10->release();
- return (cl_mem) 0;
- }
+ Image2DD3D10* pImage2DD3D10 = new (amdContext) Image2DD3D10(amdContext, flags, obj);
+ if (!pImage2DD3D10) {
+ *not_null(errcode_ret) = CL_OUT_OF_HOST_MEMORY;
+ return (cl_mem)0;
+ }
+ if (!pImage2DD3D10->create()) {
+ *not_null(errcode_ret) = CL_MEM_OBJECT_ALLOCATION_FAILURE;
+ pImage2DD3D10->release();
+ return (cl_mem)0;
+ }
- *not_null(errcode_ret) = CL_SUCCESS;
- return as_cl(pImage2DD3D10);
+ *not_null(errcode_ret) = CL_SUCCESS;
+ return as_cl(pImage2DD3D10);
}
//
// clCreateImage2DFromD3D10ResourceAMD
//
-cl_mem clCreateImage3DFromD3D10ResourceAMD(
- Context& amdContext,
- cl_mem_flags flags,
- ID3D10Resource* pD3DResource,
- UINT subresource,
- int* errcode_ret)
-{
- // Verify the resource is a 2D texture
- D3D10_RESOURCE_DIMENSION rType;
- pD3DResource->GetType(&rType);
- if(rType != D3D10_RESOURCE_DIMENSION_TEXTURE3D) {
- *not_null(errcode_ret) = CL_INVALID_D3D10_RESOURCE_KHR;
- return (cl_mem) 0;
- }
+cl_mem clCreateImage3DFromD3D10ResourceAMD(Context& amdContext, cl_mem_flags flags,
+ ID3D10Resource* pD3DResource, UINT subresource,
+ int* errcode_ret) {
+ // Verify the resource is a 2D texture
+ D3D10_RESOURCE_DIMENSION rType;
+ pD3DResource->GetType(&rType);
+ if (rType != D3D10_RESOURCE_DIMENSION_TEXTURE3D) {
+ *not_null(errcode_ret) = CL_INVALID_D3D10_RESOURCE_KHR;
+ return (cl_mem)0;
+ }
- D3D10Object obj;
- int errcode = D3D10Object::initD3D10Object(amdContext, pD3DResource, subresource, obj);
- if(CL_SUCCESS != errcode)
- {
- *not_null(errcode_ret) = errcode;
- return (cl_mem) 0;
- }
+ D3D10Object obj;
+ int errcode = D3D10Object::initD3D10Object(amdContext, pD3DResource, subresource, obj);
+ if (CL_SUCCESS != errcode) {
+ *not_null(errcode_ret) = errcode;
+ return (cl_mem)0;
+ }
- Image3DD3D10 *pImage3DD3D10 = new (amdContext)
- Image3DD3D10(amdContext, flags, obj);
- if(!pImage3DD3D10) {
- *not_null(errcode_ret) = CL_OUT_OF_HOST_MEMORY;
- return (cl_mem) 0;
- }
- if (!pImage3DD3D10->create()) {
- *not_null(errcode_ret) = CL_MEM_OBJECT_ALLOCATION_FAILURE;
- pImage3DD3D10->release();
- return (cl_mem) 0;
- }
+ Image3DD3D10* pImage3DD3D10 = new (amdContext) Image3DD3D10(amdContext, flags, obj);
+ if (!pImage3DD3D10) {
+ *not_null(errcode_ret) = CL_OUT_OF_HOST_MEMORY;
+ return (cl_mem)0;
+ }
+ if (!pImage3DD3D10->create()) {
+ *not_null(errcode_ret) = CL_MEM_OBJECT_ALLOCATION_FAILURE;
+ pImage3DD3D10->release();
+ return (cl_mem)0;
+ }
- *not_null(errcode_ret) = CL_SUCCESS;
- return as_cl(pImage3DD3D10);
+ *not_null(errcode_ret) = CL_SUCCESS;
+ return as_cl(pImage3DD3D10);
}
//
// Helper function SyncD3D10Objects
//
-void SyncD3D10Objects(std::vector& memObjects)
-{
- Memory*& mem = memObjects.front();
- if(!mem) {
- LogWarning("\nNULL memory object\n");
- return;
- }
- InteropObject* interop = mem->getInteropObj();
- if(!interop) {
- LogWarning("\nNULL interop object\n");
- return;
- }
- D3D10Object* d3d10Obj = interop->asD3D10Object();
- if(!d3d10Obj) {
- LogWarning("\nNULL D3D10 object\n");
- return;
- }
- ID3D10Query* query = d3d10Obj->getQuery();
- if(!query) {
- LogWarning("\nNULL ID3D10Query\n");
- return;
- }
- query->End();
- BOOL data = FALSE;
- while(S_OK != query->GetData(&data, sizeof(BOOL), 0))
- {
- }
+void SyncD3D10Objects(std::vector& memObjects) {
+ Memory*& mem = memObjects.front();
+ if (!mem) {
+ LogWarning("\nNULL memory object\n");
+ return;
+ }
+ InteropObject* interop = mem->getInteropObj();
+ if (!interop) {
+ LogWarning("\nNULL interop object\n");
+ return;
+ }
+ D3D10Object* d3d10Obj = interop->asD3D10Object();
+ if (!d3d10Obj) {
+ LogWarning("\nNULL D3D10 object\n");
+ return;
+ }
+ ID3D10Query* query = d3d10Obj->getQuery();
+ if (!query) {
+ LogWarning("\nNULL ID3D10Query\n");
+ return;
+ }
+ query->End();
+ BOOL data = FALSE;
+ while (S_OK != query->GetData(&data, sizeof(BOOL), 0)) {
+ }
}
//
// Class D3D10Object implementation
//
-size_t
-D3D10Object::getElementBytes(DXGI_FORMAT dxgiFmt)
-{
- size_t bytesPerPixel;
+size_t D3D10Object::getElementBytes(DXGI_FORMAT dxgiFmt) {
+ size_t bytesPerPixel;
- switch(dxgiFmt)
- {
+ switch (dxgiFmt) {
case DXGI_FORMAT_R32G32B32A32_TYPELESS:
case DXGI_FORMAT_R32G32B32A32_FLOAT:
case DXGI_FORMAT_R32G32B32A32_UINT:
case DXGI_FORMAT_R32G32B32A32_SINT:
- bytesPerPixel = 16;
- break;
+ bytesPerPixel = 16;
+ break;
case DXGI_FORMAT_R32G32B32_TYPELESS:
case DXGI_FORMAT_R32G32B32_FLOAT:
case DXGI_FORMAT_R32G32B32_UINT:
case DXGI_FORMAT_R32G32B32_SINT:
- bytesPerPixel = 12;
- break;
+ bytesPerPixel = 12;
+ break;
case DXGI_FORMAT_R16G16B16A16_TYPELESS:
case DXGI_FORMAT_R16G16B16A16_FLOAT:
@@ -690,8 +617,8 @@ D3D10Object::getElementBytes(DXGI_FORMAT dxgiFmt)
case DXGI_FORMAT_D32_FLOAT_S8X24_UINT:
case DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS:
case DXGI_FORMAT_X32_TYPELESS_G8X24_UINT:
- bytesPerPixel = 8;
- break;
+ bytesPerPixel = 8;
+ break;
case DXGI_FORMAT_R10G10B10A2_TYPELESS:
case DXGI_FORMAT_R10G10B10A2_UNORM:
@@ -725,8 +652,8 @@ D3D10Object::getElementBytes(DXGI_FORMAT dxgiFmt)
case DXGI_FORMAT_B8G8R8A8_UNORM:
case DXGI_FORMAT_B8G8R8X8_UNORM:
- bytesPerPixel = 4;
- break;
+ bytesPerPixel = 4;
+ break;
case DXGI_FORMAT_R8G8_TYPELESS:
case DXGI_FORMAT_R8G8_UNORM:
@@ -743,8 +670,8 @@ D3D10Object::getElementBytes(DXGI_FORMAT dxgiFmt)
case DXGI_FORMAT_B5G6R5_UNORM:
case DXGI_FORMAT_B5G5R5A1_UNORM:
- bytesPerPixel = 2;
- break;
+ bytesPerPixel = 2;
+ break;
case DXGI_FORMAT_R8_TYPELESS:
case DXGI_FORMAT_R8_UNORM:
@@ -753,8 +680,8 @@ D3D10Object::getElementBytes(DXGI_FORMAT dxgiFmt)
case DXGI_FORMAT_R8_SINT:
case DXGI_FORMAT_A8_UNORM:
case DXGI_FORMAT_R1_UNORM:
- bytesPerPixel = 1;
- break;
+ bytesPerPixel = 1;
+ break;
case DXGI_FORMAT_BC1_TYPELESS:
@@ -772,353 +699,350 @@ D3D10Object::getElementBytes(DXGI_FORMAT dxgiFmt)
case DXGI_FORMAT_BC5_TYPELESS:
case DXGI_FORMAT_BC5_UNORM:
case DXGI_FORMAT_BC5_SNORM:
- // Less than 1 byte per pixel - needs special consideration
- bytesPerPixel = 0;
- break;
+ // Less than 1 byte per pixel - needs special consideration
+ bytesPerPixel = 0;
+ break;
default:
- bytesPerPixel = 0;
- _ASSERT(FALSE);
- break;
- }
- return bytesPerPixel;
+ bytesPerPixel = 0;
+ _ASSERT(FALSE);
+ break;
+ }
+ return bytesPerPixel;
}
-cl_image_format
-D3D10Object::getCLFormatFromDXGI(DXGI_FORMAT dxgiFmt)
-{
- cl_image_format fmt;
+cl_image_format D3D10Object::getCLFormatFromDXGI(DXGI_FORMAT dxgiFmt) {
+ cl_image_format fmt;
- //! @todo [odintsov]: add real fmt conversion from DXGI to CL
- fmt.image_channel_order = 0;//CL_RGBA;
- fmt.image_channel_data_type = 0;//CL_UNSIGNED_INT8;
+ //! @todo [odintsov]: add real fmt conversion from DXGI to CL
+ fmt.image_channel_order = 0; // CL_RGBA;
+ fmt.image_channel_data_type = 0; // CL_UNSIGNED_INT8;
- switch(dxgiFmt)
- {
+ switch (dxgiFmt) {
case DXGI_FORMAT_R32G32B32A32_TYPELESS:
- fmt.image_channel_order = CL_RGBA;
- break;
+ fmt.image_channel_order = CL_RGBA;
+ break;
case DXGI_FORMAT_R32G32B32A32_FLOAT:
- fmt.image_channel_order = CL_RGBA;
- fmt.image_channel_data_type = CL_FLOAT;
- break;
+ fmt.image_channel_order = CL_RGBA;
+ fmt.image_channel_data_type = CL_FLOAT;
+ break;
case DXGI_FORMAT_R32G32B32A32_UINT:
- fmt.image_channel_order = CL_RGBA;
- fmt.image_channel_data_type = CL_UNSIGNED_INT32;
- break;
+ fmt.image_channel_order = CL_RGBA;
+ fmt.image_channel_data_type = CL_UNSIGNED_INT32;
+ break;
case DXGI_FORMAT_R32G32B32A32_SINT:
- fmt.image_channel_order = CL_RGBA;
- fmt.image_channel_data_type = CL_SIGNED_INT32;
- break;
+ fmt.image_channel_order = CL_RGBA;
+ fmt.image_channel_data_type = CL_SIGNED_INT32;
+ break;
case DXGI_FORMAT_R32G32B32_TYPELESS:
- fmt.image_channel_order = CL_RGB;
- break;
+ fmt.image_channel_order = CL_RGB;
+ break;
case DXGI_FORMAT_R32G32B32_FLOAT:
- fmt.image_channel_order = CL_RGB;
- fmt.image_channel_data_type = CL_FLOAT;
- break;
+ fmt.image_channel_order = CL_RGB;
+ fmt.image_channel_data_type = CL_FLOAT;
+ break;
case DXGI_FORMAT_R32G32B32_UINT:
- fmt.image_channel_order = CL_RGB;
- fmt.image_channel_data_type = CL_UNSIGNED_INT32;
- break;
+ fmt.image_channel_order = CL_RGB;
+ fmt.image_channel_data_type = CL_UNSIGNED_INT32;
+ break;
case DXGI_FORMAT_R32G32B32_SINT:
- fmt.image_channel_order = CL_RGB;
- fmt.image_channel_data_type = CL_SIGNED_INT32;
- break;
+ fmt.image_channel_order = CL_RGB;
+ fmt.image_channel_data_type = CL_SIGNED_INT32;
+ break;
case DXGI_FORMAT_R16G16B16A16_TYPELESS:
- fmt.image_channel_order = CL_RGBA;
- break;
+ fmt.image_channel_order = CL_RGBA;
+ break;
case DXGI_FORMAT_R16G16B16A16_FLOAT:
- fmt.image_channel_order = CL_RGBA;
- fmt.image_channel_data_type = CL_HALF_FLOAT;
- break;
+ fmt.image_channel_order = CL_RGBA;
+ fmt.image_channel_data_type = CL_HALF_FLOAT;
+ break;
case DXGI_FORMAT_R16G16B16A16_UNORM:
- fmt.image_channel_order = CL_RGBA;
- fmt.image_channel_data_type = CL_UNORM_INT16;
- break;
+ fmt.image_channel_order = CL_RGBA;
+ fmt.image_channel_data_type = CL_UNORM_INT16;
+ break;
case DXGI_FORMAT_R16G16B16A16_UINT:
- fmt.image_channel_order = CL_RGBA;
- fmt.image_channel_data_type = CL_UNSIGNED_INT16;
- break;
+ fmt.image_channel_order = CL_RGBA;
+ fmt.image_channel_data_type = CL_UNSIGNED_INT16;
+ break;
case DXGI_FORMAT_R16G16B16A16_SNORM:
- fmt.image_channel_order = CL_RGBA;
- fmt.image_channel_data_type = CL_SNORM_INT16;
- break;
+ fmt.image_channel_order = CL_RGBA;
+ fmt.image_channel_data_type = CL_SNORM_INT16;
+ break;
case DXGI_FORMAT_R16G16B16A16_SINT:
- fmt.image_channel_order = CL_RGBA;
- fmt.image_channel_data_type = CL_SIGNED_INT16;
- break;
+ fmt.image_channel_order = CL_RGBA;
+ fmt.image_channel_data_type = CL_SIGNED_INT16;
+ break;
case DXGI_FORMAT_R32G32_TYPELESS:
- fmt.image_channel_order = CL_RG;
- break;
+ fmt.image_channel_order = CL_RG;
+ break;
case DXGI_FORMAT_R32G32_FLOAT:
- fmt.image_channel_order = CL_RG;
- fmt.image_channel_data_type = CL_FLOAT;
- break;
+ fmt.image_channel_order = CL_RG;
+ fmt.image_channel_data_type = CL_FLOAT;
+ break;
case DXGI_FORMAT_R32G32_UINT:
- fmt.image_channel_order = CL_RG;
- fmt.image_channel_data_type = CL_UNSIGNED_INT32;
- break;
+ fmt.image_channel_order = CL_RG;
+ fmt.image_channel_data_type = CL_UNSIGNED_INT32;
+ break;
case DXGI_FORMAT_R32G32_SINT:
- fmt.image_channel_order = CL_RG;
- fmt.image_channel_data_type = CL_SIGNED_INT32;
- break;
+ fmt.image_channel_order = CL_RG;
+ fmt.image_channel_data_type = CL_SIGNED_INT32;
+ break;
case DXGI_FORMAT_R32G8X24_TYPELESS:
- break;
+ break;
case DXGI_FORMAT_D32_FLOAT_S8X24_UINT:
- break;
+ break;
case DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS:
- break;
+ break;
case DXGI_FORMAT_X32_TYPELESS_G8X24_UINT:
- break;
+ break;
case DXGI_FORMAT_R10G10B10A2_TYPELESS:
- fmt.image_channel_order = CL_RGBA;
- break;
+ fmt.image_channel_order = CL_RGBA;
+ break;
case DXGI_FORMAT_R10G10B10A2_UNORM:
- fmt.image_channel_order = CL_RGBA;
- break;
+ fmt.image_channel_order = CL_RGBA;
+ break;
case DXGI_FORMAT_R10G10B10A2_UINT:
- fmt.image_channel_order = CL_RGBA;
- break;
+ fmt.image_channel_order = CL_RGBA;
+ break;
case DXGI_FORMAT_R11G11B10_FLOAT:
- fmt.image_channel_order = CL_RGB;
- break;
+ fmt.image_channel_order = CL_RGB;
+ break;
case DXGI_FORMAT_R8G8B8A8_TYPELESS:
- fmt.image_channel_order = CL_RGBA;
- break;
+ fmt.image_channel_order = CL_RGBA;
+ break;
case DXGI_FORMAT_R8G8B8A8_UNORM:
- fmt.image_channel_order = CL_RGBA;
- fmt.image_channel_data_type = CL_UNORM_INT8;
- break;
+ fmt.image_channel_order = CL_RGBA;
+ fmt.image_channel_data_type = CL_UNORM_INT8;
+ break;
case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB:
- fmt.image_channel_order = CL_RGBA;
- fmt.image_channel_data_type = CL_UNORM_INT8;
- break;
+ fmt.image_channel_order = CL_RGBA;
+ fmt.image_channel_data_type = CL_UNORM_INT8;
+ break;
case DXGI_FORMAT_R8G8B8A8_UINT:
- fmt.image_channel_order = CL_RGBA;
- fmt.image_channel_data_type = CL_UNSIGNED_INT8;
- break;
+ fmt.image_channel_order = CL_RGBA;
+ fmt.image_channel_data_type = CL_UNSIGNED_INT8;
+ break;
case DXGI_FORMAT_R8G8B8A8_SNORM:
- fmt.image_channel_order = CL_RGBA;
- fmt.image_channel_data_type = CL_SNORM_INT8;
- break;
+ fmt.image_channel_order = CL_RGBA;
+ fmt.image_channel_data_type = CL_SNORM_INT8;
+ break;
case DXGI_FORMAT_R8G8B8A8_SINT:
- fmt.image_channel_order = CL_RGBA;
- fmt.image_channel_data_type = CL_SIGNED_INT8;
- break;
+ fmt.image_channel_order = CL_RGBA;
+ fmt.image_channel_data_type = CL_SIGNED_INT8;
+ break;
case DXGI_FORMAT_R16G16_TYPELESS:
- fmt.image_channel_order = CL_RG;
- break;
+ fmt.image_channel_order = CL_RG;
+ break;
case DXGI_FORMAT_R16G16_FLOAT:
- fmt.image_channel_order = CL_RG;
- fmt.image_channel_data_type = CL_HALF_FLOAT;
- break;
+ fmt.image_channel_order = CL_RG;
+ fmt.image_channel_data_type = CL_HALF_FLOAT;
+ break;
case DXGI_FORMAT_R16G16_UNORM:
- fmt.image_channel_order = CL_RG;
- fmt.image_channel_data_type = CL_UNORM_INT16;
- break;
+ fmt.image_channel_order = CL_RG;
+ fmt.image_channel_data_type = CL_UNORM_INT16;
+ break;
case DXGI_FORMAT_R16G16_UINT:
- fmt.image_channel_order = CL_RG;
- fmt.image_channel_data_type = CL_UNSIGNED_INT16;
- break;
+ fmt.image_channel_order = CL_RG;
+ fmt.image_channel_data_type = CL_UNSIGNED_INT16;
+ break;
case DXGI_FORMAT_R16G16_SNORM:
- fmt.image_channel_order = CL_RG;
- fmt.image_channel_data_type = CL_SNORM_INT16;
- break;
+ fmt.image_channel_order = CL_RG;
+ fmt.image_channel_data_type = CL_SNORM_INT16;
+ break;
case DXGI_FORMAT_R16G16_SINT:
- fmt.image_channel_order = CL_RG;
- fmt.image_channel_data_type = CL_SIGNED_INT16;
- break;
+ fmt.image_channel_order = CL_RG;
+ fmt.image_channel_data_type = CL_SIGNED_INT16;
+ break;
case DXGI_FORMAT_R32_TYPELESS:
- fmt.image_channel_order = CL_R;
- break;
+ fmt.image_channel_order = CL_R;
+ break;
case DXGI_FORMAT_D32_FLOAT:
- break;
+ break;
case DXGI_FORMAT_R32_FLOAT:
- fmt.image_channel_order = CL_R;
- fmt.image_channel_data_type = CL_FLOAT;
- break;
+ fmt.image_channel_order = CL_R;
+ fmt.image_channel_data_type = CL_FLOAT;
+ break;
case DXGI_FORMAT_R32_UINT:
- fmt.image_channel_order = CL_R;
- fmt.image_channel_data_type = CL_UNSIGNED_INT32;
- break;
+ fmt.image_channel_order = CL_R;
+ fmt.image_channel_data_type = CL_UNSIGNED_INT32;
+ break;
case DXGI_FORMAT_R32_SINT:
- fmt.image_channel_order = CL_R;
- fmt.image_channel_data_type = CL_SIGNED_INT32;
- break;
+ fmt.image_channel_order = CL_R;
+ fmt.image_channel_data_type = CL_SIGNED_INT32;
+ break;
case DXGI_FORMAT_R24G8_TYPELESS:
- fmt.image_channel_order = CL_RG;
- break;
+ fmt.image_channel_order = CL_RG;
+ break;
case DXGI_FORMAT_D24_UNORM_S8_UINT:
- break;
+ break;
case DXGI_FORMAT_R24_UNORM_X8_TYPELESS:
- break;
+ break;
case DXGI_FORMAT_X24_TYPELESS_G8_UINT:
- break;
+ break;
case DXGI_FORMAT_R9G9B9E5_SHAREDEXP:
- break;
+ break;
case DXGI_FORMAT_R8G8_B8G8_UNORM:
- fmt.image_channel_data_type = CL_UNORM_INT8;
- break;
+ fmt.image_channel_data_type = CL_UNORM_INT8;
+ break;
case DXGI_FORMAT_G8R8_G8B8_UNORM:
- fmt.image_channel_data_type = CL_UNORM_INT8;
- break;
+ fmt.image_channel_data_type = CL_UNORM_INT8;
+ break;
case DXGI_FORMAT_B8G8R8A8_UNORM:
- fmt.image_channel_order = CL_BGRA;
- fmt.image_channel_data_type = CL_UNORM_INT8;
- break;
+ fmt.image_channel_order = CL_BGRA;
+ fmt.image_channel_data_type = CL_UNORM_INT8;
+ break;
case DXGI_FORMAT_B8G8R8X8_UNORM:
- fmt.image_channel_data_type = CL_UNORM_INT8;
- break;
+ fmt.image_channel_data_type = CL_UNORM_INT8;
+ break;
case DXGI_FORMAT_R8G8_TYPELESS:
- fmt.image_channel_order = CL_RG;
- break;
+ fmt.image_channel_order = CL_RG;
+ break;
case DXGI_FORMAT_R8G8_UNORM:
- fmt.image_channel_order = CL_RG;
- fmt.image_channel_data_type = CL_UNORM_INT8;
- break;
+ fmt.image_channel_order = CL_RG;
+ fmt.image_channel_data_type = CL_UNORM_INT8;
+ break;
case DXGI_FORMAT_R8G8_UINT:
- fmt.image_channel_order = CL_RG;
- fmt.image_channel_data_type = CL_UNSIGNED_INT8;
- break;
+ fmt.image_channel_order = CL_RG;
+ fmt.image_channel_data_type = CL_UNSIGNED_INT8;
+ break;
case DXGI_FORMAT_R8G8_SNORM:
- fmt.image_channel_order = CL_RG;
- fmt.image_channel_data_type = CL_SNORM_INT8;
- break;
+ fmt.image_channel_order = CL_RG;
+ fmt.image_channel_data_type = CL_SNORM_INT8;
+ break;
case DXGI_FORMAT_R8G8_SINT:
- fmt.image_channel_order = CL_RG;
- fmt.image_channel_data_type = CL_SIGNED_INT8;
- break;
+ fmt.image_channel_order = CL_RG;
+ fmt.image_channel_data_type = CL_SIGNED_INT8;
+ break;
case DXGI_FORMAT_R16_TYPELESS:
- fmt.image_channel_order = CL_R;
- break;
+ fmt.image_channel_order = CL_R;
+ break;
case DXGI_FORMAT_R16_FLOAT:
- fmt.image_channel_order = CL_R;
- fmt.image_channel_data_type = CL_HALF_FLOAT;
- break;
+ fmt.image_channel_order = CL_R;
+ fmt.image_channel_data_type = CL_HALF_FLOAT;
+ break;
case DXGI_FORMAT_D16_UNORM:
- fmt.image_channel_data_type = CL_UNORM_INT16;
- break;
+ fmt.image_channel_data_type = CL_UNORM_INT16;
+ break;
case DXGI_FORMAT_R16_UNORM:
- fmt.image_channel_order = CL_R;
- fmt.image_channel_data_type = CL_UNORM_INT16;
- break;
+ fmt.image_channel_order = CL_R;
+ fmt.image_channel_data_type = CL_UNORM_INT16;
+ break;
case DXGI_FORMAT_R16_UINT:
- fmt.image_channel_order = CL_R;
- fmt.image_channel_data_type = CL_UNSIGNED_INT16;
- break;
+ fmt.image_channel_order = CL_R;
+ fmt.image_channel_data_type = CL_UNSIGNED_INT16;
+ break;
case DXGI_FORMAT_R16_SNORM:
- fmt.image_channel_order = CL_R;
- fmt.image_channel_data_type = CL_SNORM_INT16;
- break;
+ fmt.image_channel_order = CL_R;
+ fmt.image_channel_data_type = CL_SNORM_INT16;
+ break;
case DXGI_FORMAT_R16_SINT:
- fmt.image_channel_order = CL_R;
- fmt.image_channel_data_type = CL_SIGNED_INT16;
- break;
+ fmt.image_channel_order = CL_R;
+ fmt.image_channel_data_type = CL_SIGNED_INT16;
+ break;
case DXGI_FORMAT_B5G6R5_UNORM:
- fmt.image_channel_data_type = CL_UNORM_SHORT_565;
- break;
+ fmt.image_channel_data_type = CL_UNORM_SHORT_565;
+ break;
case DXGI_FORMAT_B5G5R5A1_UNORM:
- fmt.image_channel_order = CL_BGRA;
- break;
+ fmt.image_channel_order = CL_BGRA;
+ break;
case DXGI_FORMAT_R8_TYPELESS:
- fmt.image_channel_order = CL_R;
- break;
+ fmt.image_channel_order = CL_R;
+ break;
case DXGI_FORMAT_R8_UNORM:
- fmt.image_channel_order = CL_R;
- fmt.image_channel_data_type = CL_UNORM_INT8;
- break;
+ fmt.image_channel_order = CL_R;
+ fmt.image_channel_data_type = CL_UNORM_INT8;
+ break;
case DXGI_FORMAT_R8_UINT:
- fmt.image_channel_order = CL_R;
- fmt.image_channel_data_type = CL_UNSIGNED_INT8;
- break;
+ fmt.image_channel_order = CL_R;
+ fmt.image_channel_data_type = CL_UNSIGNED_INT8;
+ break;
case DXGI_FORMAT_R8_SNORM:
- fmt.image_channel_order = CL_R;
- fmt.image_channel_data_type = CL_SNORM_INT8;
- break;
+ fmt.image_channel_order = CL_R;
+ fmt.image_channel_data_type = CL_SNORM_INT8;
+ break;
case DXGI_FORMAT_R8_SINT:
- fmt.image_channel_order = CL_R;
- fmt.image_channel_data_type = CL_SIGNED_INT8;
- break;
+ fmt.image_channel_order = CL_R;
+ fmt.image_channel_data_type = CL_SIGNED_INT8;
+ break;
case DXGI_FORMAT_A8_UNORM:
- fmt.image_channel_order = CL_A;
- fmt.image_channel_data_type = CL_UNORM_INT8;
- break;
+ fmt.image_channel_order = CL_A;
+ fmt.image_channel_data_type = CL_UNORM_INT8;
+ break;
case DXGI_FORMAT_R1_UNORM:
- fmt.image_channel_order = CL_R;
- break;
+ fmt.image_channel_order = CL_R;
+ break;
case DXGI_FORMAT_BC1_TYPELESS:
case DXGI_FORMAT_BC1_UNORM:
@@ -1135,364 +1059,339 @@ D3D10Object::getCLFormatFromDXGI(DXGI_FORMAT dxgiFmt)
case DXGI_FORMAT_BC5_TYPELESS:
case DXGI_FORMAT_BC5_UNORM:
case DXGI_FORMAT_BC5_SNORM:
- break;
+ break;
default:
- _ASSERT(FALSE);
- break;
- }
+ _ASSERT(FALSE);
+ break;
+ }
- return fmt;
+ return fmt;
}
-size_t
-D3D10Object::getResourceByteSize()
-{
- size_t bytes = 1;
+size_t D3D10Object::getResourceByteSize() {
+ size_t bytes = 1;
- //! @todo [odintsov]: take into consideration the mip level?!
+ //! @todo [odintsov]: take into consideration the mip level?!
- switch(objDesc_.objDim_)
- {
+ switch (objDesc_.objDim_) {
case D3D10_RESOURCE_DIMENSION_BUFFER:
- bytes = objDesc_.objSize_.ByteWidth;
- break;
+ bytes = objDesc_.objSize_.ByteWidth;
+ break;
case D3D10_RESOURCE_DIMENSION_TEXTURE3D:
- bytes = objDesc_.objSize_.Depth;
+ bytes = objDesc_.objSize_.Depth;
case D3D10_RESOURCE_DIMENSION_TEXTURE2D:
- bytes *= objDesc_.objSize_.Height;
+ bytes *= objDesc_.objSize_.Height;
case D3D10_RESOURCE_DIMENSION_TEXTURE1D:
- bytes *= objDesc_.objSize_.Width * getElementBytes();
- break;
+ bytes *= objDesc_.objSize_.Width * getElementBytes();
+ break;
default:
- LogError("getResourceByteSize: unknown type of D3D10 resource");
- bytes = 0;
- break;
- }
- return bytes;
+ LogError("getResourceByteSize: unknown type of D3D10 resource");
+ bytes = 0;
+ break;
+ }
+ return bytes;
}
-int
-D3D10Object::initD3D10Object(const Context& amdContext, ID3D10Resource* pRes, UINT subres, D3D10Object& obj)
-{
- ID3D10Device *pDev;
- HRESULT hr;
- ScopedLock sl(resLock_);
+int D3D10Object::initD3D10Object(const Context& amdContext, ID3D10Resource* pRes, UINT subres,
+ D3D10Object& obj) {
+ ID3D10Device* pDev;
+ HRESULT hr;
+ ScopedLock sl(resLock_);
- // Check if this ressource has already been used for interop
- std::vector>::iterator it;
- for(it = resources_.begin(); it != resources_.end(); ++it) {
- if((*it).first == (void*) pRes && (*it).second == subres) {
- return CL_INVALID_D3D10_RESOURCE_KHR;
- }
+ // Check if this ressource has already been used for interop
+ std::vector>::iterator it;
+ for (it = resources_.begin(); it != resources_.end(); ++it) {
+ if ((*it).first == (void*)pRes && (*it).second == subres) {
+ return CL_INVALID_D3D10_RESOURCE_KHR;
}
+ }
- (obj.pD3D10Res_ = pRes)->GetDevice(&pDev);
-
- if(!pDev) {
- return CL_INVALID_D3D10_DEVICE_KHR;
- }
+ (obj.pD3D10Res_ = pRes)->GetDevice(&pDev);
- D3D10_QUERY_DESC desc = {D3D10_QUERY_EVENT, 0}; \
- pDev->CreateQuery(&desc, &obj.pQuery_); \
+ if (!pDev) {
+ return CL_INVALID_D3D10_DEVICE_KHR;
+ }
-#define SET_SHARED_FLAGS() \
- { \
- obj.pD3D10ResOrig_ = obj.pD3D10Res_; \
- memcpy(&obj.objDescOrig_, &obj.objDesc_, sizeof(D3D10ObjDesc_t)); \
- /* @todo - Check device type and select right usage for resource */ \
- /* For now get only DPU path, CPU path for buffers */ \
- /* will not worl on DEFAUL resources */ \
- /*desc.Usage = D3D10_USAGE_STAGING;*/ \
- desc.Usage = D3D10_USAGE_DEFAULT; \
- desc.MiscFlags = D3D10_RESOURCE_MISC_SHARED; \
- desc.CPUAccessFlags = 0; \
- }
+ D3D10_QUERY_DESC desc = {D3D10_QUERY_EVENT, 0};
+ pDev->CreateQuery(&desc, &obj.pQuery_);
-#define STORE_SHARED_FLAGS(restype) \
- { \
- if(S_OK == hr && obj.pD3D10Res_) { \
- obj.objDesc_.objFlags_.d3d10Usage_ = desc.Usage; \
- obj.objDesc_.objFlags_.bindFlags_ = desc.BindFlags; \
- obj.objDesc_.objFlags_.miscFlags_ = desc.MiscFlags; \
- obj.objDesc_.objFlags_.cpuAccessFlags_ = desc.CPUAccessFlags; \
- } \
- else { \
- LogError("\nCannot create shared " #restype "\n"); \
- return CL_INVALID_D3D10_RESOURCE_KHR; \
- } \
- }
+#define SET_SHARED_FLAGS() \
+ { \
+ obj.pD3D10ResOrig_ = obj.pD3D10Res_; \
+ memcpy(&obj.objDescOrig_, &obj.objDesc_, sizeof(D3D10ObjDesc_t)); \
+ /* @todo - Check device type and select right usage for resource */ \
+ /* For now get only DPU path, CPU path for buffers */ \
+ /* will not worl on DEFAUL resources */ \
+ /*desc.Usage = D3D10_USAGE_STAGING;*/ \
+ desc.Usage = D3D10_USAGE_DEFAULT; \
+ desc.MiscFlags = D3D10_RESOURCE_MISC_SHARED; \
+ desc.CPUAccessFlags = 0; \
+ }
-#define SET_BINDING() \
- { \
- switch(desc.Format) { \
- case DXGI_FORMAT_D32_FLOAT_S8X24_UINT: \
- case DXGI_FORMAT_D32_FLOAT: \
- case DXGI_FORMAT_D24_UNORM_S8_UINT: \
- case DXGI_FORMAT_D16_UNORM: \
- desc.BindFlags = D3D10_BIND_DEPTH_STENCIL; \
- break; \
- default: \
- desc.BindFlags = D3D10_BIND_SHADER_RESOURCE | D3D10_BIND_RENDER_TARGET; \
- break; \
- } \
- }
+#define STORE_SHARED_FLAGS(restype) \
+ { \
+ if (S_OK == hr && obj.pD3D10Res_) { \
+ obj.objDesc_.objFlags_.d3d10Usage_ = desc.Usage; \
+ obj.objDesc_.objFlags_.bindFlags_ = desc.BindFlags; \
+ obj.objDesc_.objFlags_.miscFlags_ = desc.MiscFlags; \
+ obj.objDesc_.objFlags_.cpuAccessFlags_ = desc.CPUAccessFlags; \
+ } else { \
+ LogError("\nCannot create shared " #restype "\n"); \
+ return CL_INVALID_D3D10_RESOURCE_KHR; \
+ } \
+ }
- pRes->GetType(&obj.objDesc_.objDim_);
+#define SET_BINDING() \
+ { \
+ switch (desc.Format) { \
+ case DXGI_FORMAT_D32_FLOAT_S8X24_UINT: \
+ case DXGI_FORMAT_D32_FLOAT: \
+ case DXGI_FORMAT_D24_UNORM_S8_UINT: \
+ case DXGI_FORMAT_D16_UNORM: \
+ desc.BindFlags = D3D10_BIND_DEPTH_STENCIL; \
+ break; \
+ default: \
+ desc.BindFlags = D3D10_BIND_SHADER_RESOURCE | D3D10_BIND_RENDER_TARGET; \
+ break; \
+ } \
+ }
- // Init defaults
- obj.objDesc_.objSize_.Height = 1;
- obj.objDesc_.objSize_.Depth = 1;
- obj.objDesc_.mipLevels_ = 1;
- obj.objDesc_.arraySize_ = 1;
- obj.objDesc_.dxgiFormat_ = DXGI_FORMAT_UNKNOWN;
- obj.objDesc_.dxgiSampleDesc_ = dxgiSampleDescDefault;
+ pRes->GetType(&obj.objDesc_.objDim_);
- switch(obj.objDesc_.objDim_) {
- case D3D10_RESOURCE_DIMENSION_BUFFER: // = 1,
- {
- D3D10_BUFFER_DESC desc;
- (reinterpret_cast(pRes))->GetDesc(&desc);
- obj.objDesc_.objSize_.ByteWidth = desc.ByteWidth;
- obj.objDesc_.objFlags_.d3d10Usage_ = desc.Usage;
- obj.objDesc_.objFlags_.bindFlags_ = desc.BindFlags;
- obj.objDesc_.objFlags_.cpuAccessFlags_ = desc.CPUAccessFlags;
- obj.objDesc_.objFlags_.miscFlags_ = desc.MiscFlags;
- // Handle D3D10Buffer without shared handle - create
- // a duplicate with shared handle to provide for CAL
- if(!(obj.objDesc_.objFlags_.miscFlags_ & D3D10_RESOURCE_MISC_SHARED)) {
- SET_SHARED_FLAGS();
- desc.BindFlags = D3D10_BIND_SHADER_RESOURCE | D3D10_BIND_RENDER_TARGET;
- hr = pDev->CreateBuffer(&desc, NULL,
- (ID3D10Buffer**) &obj.pD3D10Res_);
- STORE_SHARED_FLAGS(ID3D10Buffer);
- }
- }
- break;
+ // Init defaults
+ obj.objDesc_.objSize_.Height = 1;
+ obj.objDesc_.objSize_.Depth = 1;
+ obj.objDesc_.mipLevels_ = 1;
+ obj.objDesc_.arraySize_ = 1;
+ obj.objDesc_.dxgiFormat_ = DXGI_FORMAT_UNKNOWN;
+ obj.objDesc_.dxgiSampleDesc_ = dxgiSampleDescDefault;
- case D3D10_RESOURCE_DIMENSION_TEXTURE1D: // = 2,
- {
- D3D10_TEXTURE1D_DESC desc;
- (reinterpret_cast(pRes))->GetDesc(&desc);
-
- if(subres) {
- // Calculate correct size of the subresource
- UINT miplevel = subres;
- if(desc.ArraySize > 1) {
- miplevel = subres % desc.ArraySize;
- }
- if(miplevel >= desc.MipLevels) {
- LogWarning("\nMiplevel >= number of miplevels\n");
- }
- if(subres >= desc.MipLevels*desc.ArraySize) {
- return CL_INVALID_VALUE;
- }
- desc.Width >>= miplevel;
- if(!desc.Width) {
- desc.Width = 1;
- }
- }
- obj.objDesc_.objSize_.Width = desc.Width;
- obj.objDesc_.mipLevels_ = desc.MipLevels;
- obj.objDesc_.arraySize_ = desc.ArraySize;
- obj.objDesc_.dxgiFormat_ = desc.Format;
- obj.objDesc_.objFlags_.d3d10Usage_ = desc.Usage;
- obj.objDesc_.objFlags_.bindFlags_ = desc.BindFlags;
- obj.objDesc_.objFlags_.cpuAccessFlags_ = desc.CPUAccessFlags;
- obj.objDesc_.objFlags_.miscFlags_ = desc.MiscFlags;
- // Handle D3D10Texture1D without shared handle - create
- // a duplicate with shared handle and provide it for CAL
- // Workaround for subresource > 0 in shared resource
- if(subres)
- obj.objDesc_.objFlags_.miscFlags_ &=
- ~(D3D10_RESOURCE_MISC_SHARED);
- if(!(obj.objDesc_.objFlags_.miscFlags_ & D3D10_RESOURCE_MISC_SHARED)) {
- SET_SHARED_FLAGS();
- SET_BINDING();
- obj.objDesc_.mipLevels_ = desc.MipLevels = 1;
- obj.objDesc_.arraySize_ = desc.ArraySize = 1;
- hr = pDev->CreateTexture1D(&desc, NULL,
- (ID3D10Texture1D**) &obj.pD3D10Res_);
- STORE_SHARED_FLAGS(ID3D10Texture1D);
- }
- }
- break;
-
- case D3D10_RESOURCE_DIMENSION_TEXTURE2D: // = 3,
- {
- D3D10_TEXTURE2D_DESC desc;
- (reinterpret_cast(pRes))->GetDesc(&desc);
-
- if(subres) {
- // Calculate correct size of the subresource
- UINT miplevel = subres;
- if(desc.ArraySize > 1) {
- miplevel = subres % desc.MipLevels;
- }
- if(miplevel >= desc.MipLevels) {
- LogWarning("\nMiplevel >= number of miplevels\n");
- }
- if(subres >= desc.MipLevels*desc.ArraySize) {
- return CL_INVALID_VALUE;
- }
- desc.Width >>= miplevel;
- if(!desc.Width) {
- desc.Width = 1;
- }
- desc.Height >>= miplevel;
- if(!desc.Height) {
- desc.Height = 1;
- }
- }
- obj.objDesc_.objSize_.Width = desc.Width;
- obj.objDesc_.objSize_.Height = desc.Height;
- obj.objDesc_.mipLevels_ = desc.MipLevels;
- obj.objDesc_.arraySize_ = desc.ArraySize;
- obj.objDesc_.dxgiFormat_ = desc.Format;
- obj.objDesc_.dxgiSampleDesc_ = desc.SampleDesc;
- obj.objDesc_.objFlags_.d3d10Usage_ = desc.Usage;
- obj.objDesc_.objFlags_.bindFlags_ = desc.BindFlags;
- obj.objDesc_.objFlags_.cpuAccessFlags_ = desc.CPUAccessFlags;
- obj.objDesc_.objFlags_.miscFlags_ = desc.MiscFlags;
- // Handle D3D10Texture2D without shared handle - create
- // a duplicate with shared handle and provide it for CAL
- // Workaround for subresource > 0 in shared resource
- if(subres)
- obj.objDesc_.objFlags_.miscFlags_ &=
- ~(D3D10_RESOURCE_MISC_SHARED);
- if(!(obj.objDesc_.objFlags_.miscFlags_ & D3D10_RESOURCE_MISC_SHARED)) {
- SET_SHARED_FLAGS();
- SET_BINDING();
- obj.objDesc_.mipLevels_ = desc.MipLevels = 1;
- obj.objDesc_.arraySize_ = desc.ArraySize = 1;
- hr = pDev->CreateTexture2D(&desc, NULL,
- (ID3D10Texture2D**) &obj.pD3D10Res_);
- STORE_SHARED_FLAGS(ID3D10Texture2D);
- }
- }
- break;
-
- case D3D10_RESOURCE_DIMENSION_TEXTURE3D: // = 4
- {
- D3D10_TEXTURE3D_DESC desc;
- (reinterpret_cast(pRes))->GetDesc(&desc);
-
- if(subres) {
- // Calculate correct size of the subresource
- UINT miplevel = subres;
- if(miplevel >= desc.MipLevels) {
- LogWarning("\nMiplevel >= number of miplevels\n");
- }
- if(subres >= desc.MipLevels) {
- return CL_INVALID_VALUE;
- }
- desc.Width >>= miplevel;
- if(!desc.Width) {
- desc.Width = 1;
- }
- desc.Height >>= miplevel;
- if(!desc.Height) {
- desc.Height = 1;
- }
- desc.Depth >>= miplevel;
- if(!desc.Depth) {
- desc.Depth = 1;
- }
- }
- obj.objDesc_.objSize_.Width = desc.Width;
- obj.objDesc_.objSize_.Height = desc.Height;
- obj.objDesc_.objSize_.Depth = desc.Depth;
- obj.objDesc_.mipLevels_ = desc.MipLevels;
- obj.objDesc_.dxgiFormat_ = desc.Format;
- obj.objDesc_.objFlags_.d3d10Usage_ = desc.Usage;
- obj.objDesc_.objFlags_.bindFlags_ = desc.BindFlags;
- obj.objDesc_.objFlags_.cpuAccessFlags_ = desc.CPUAccessFlags;
- obj.objDesc_.objFlags_.miscFlags_ = desc.MiscFlags;
- // Handle D3D10Texture3D without shared handle - create
- // a duplicate with shared handle and provide it for CAL
- // Workaround for subresource > 0 in shared resource
- if(obj.objDesc_.mipLevels_ > 1)
- obj.objDesc_.objFlags_.miscFlags_ &=
- ~(D3D10_RESOURCE_MISC_SHARED);
- if(!(obj.objDesc_.objFlags_.miscFlags_ & D3D10_RESOURCE_MISC_SHARED)) {
- SET_SHARED_FLAGS();
- SET_BINDING();
- obj.objDesc_.mipLevels_ = desc.MipLevels = 1;
- hr = pDev->CreateTexture3D(&desc, NULL,
- (ID3D10Texture3D**) &obj.pD3D10Res_);
- STORE_SHARED_FLAGS(ID3D10Texture3D);
- }
- }
- break;
-
- default:
- LogError("unknown type of D3D10 resource");
- return CL_INVALID_D3D10_RESOURCE_KHR;
- }
- obj.subRes_ = subres;
- pDev->Release();
- // Check for CL format compatibilty
- if(obj.objDesc_.objDim_ != D3D10_RESOURCE_DIMENSION_BUFFER) {
- cl_image_format clFmt = obj.getCLFormatFromDXGI(obj.objDesc_.dxgiFormat_);
- amd::Image::Format imageFormat(clFmt);
- if(!imageFormat.isSupported(amdContext)) {
- return CL_INVALID_IMAGE_FORMAT_DESCRIPTOR;
- }
- }
- resources_.push_back(std::make_pair(pRes, subres));
- return CL_SUCCESS;
-}
-
-bool
-D3D10Object::copyOrigToShared()
-{
- // Don't copy if there is no orig
- if (NULL == getD3D10ResOrig()) return true;
-
- ID3D10Device *d3dDev;
- pD3D10Res_->GetDevice(&d3dDev);
- if(!d3dDev) {
- LogError("\nCannot get D3D10 device from D3D10 resource\n");
- return false;
- }
- // Any usage source can be read by GPU
- d3dDev->CopySubresourceRegion(pD3D10Res_, 0, 0, 0, 0,
- pD3D10ResOrig_, subRes_, NULL);
-
- // Flush D3D queues and make sure D3D stuff is finished
- d3dDev->Flush();
- pQuery_->End();
- BOOL data;
- while(S_OK != pQuery_->GetData(&data, sizeof(BOOL), 0) && data != TRUE)
+ switch (obj.objDesc_.objDim_) {
+ case D3D10_RESOURCE_DIMENSION_BUFFER: // = 1,
{
- }
+ D3D10_BUFFER_DESC desc;
+ (reinterpret_cast(pRes))->GetDesc(&desc);
+ obj.objDesc_.objSize_.ByteWidth = desc.ByteWidth;
+ obj.objDesc_.objFlags_.d3d10Usage_ = desc.Usage;
+ obj.objDesc_.objFlags_.bindFlags_ = desc.BindFlags;
+ obj.objDesc_.objFlags_.cpuAccessFlags_ = desc.CPUAccessFlags;
+ obj.objDesc_.objFlags_.miscFlags_ = desc.MiscFlags;
+ // Handle D3D10Buffer without shared handle - create
+ // a duplicate with shared handle to provide for CAL
+ if (!(obj.objDesc_.objFlags_.miscFlags_ & D3D10_RESOURCE_MISC_SHARED)) {
+ SET_SHARED_FLAGS();
+ desc.BindFlags = D3D10_BIND_SHADER_RESOURCE | D3D10_BIND_RENDER_TARGET;
+ hr = pDev->CreateBuffer(&desc, NULL, (ID3D10Buffer**)&obj.pD3D10Res_);
+ STORE_SHARED_FLAGS(ID3D10Buffer);
+ }
+ } break;
- d3dDev->Release();
- return true;
+ case D3D10_RESOURCE_DIMENSION_TEXTURE1D: // = 2,
+ {
+ D3D10_TEXTURE1D_DESC desc;
+ (reinterpret_cast(pRes))->GetDesc(&desc);
+
+ if (subres) {
+ // Calculate correct size of the subresource
+ UINT miplevel = subres;
+ if (desc.ArraySize > 1) {
+ miplevel = subres % desc.ArraySize;
+ }
+ if (miplevel >= desc.MipLevels) {
+ LogWarning("\nMiplevel >= number of miplevels\n");
+ }
+ if (subres >= desc.MipLevels * desc.ArraySize) {
+ return CL_INVALID_VALUE;
+ }
+ desc.Width >>= miplevel;
+ if (!desc.Width) {
+ desc.Width = 1;
+ }
+ }
+ obj.objDesc_.objSize_.Width = desc.Width;
+ obj.objDesc_.mipLevels_ = desc.MipLevels;
+ obj.objDesc_.arraySize_ = desc.ArraySize;
+ obj.objDesc_.dxgiFormat_ = desc.Format;
+ obj.objDesc_.objFlags_.d3d10Usage_ = desc.Usage;
+ obj.objDesc_.objFlags_.bindFlags_ = desc.BindFlags;
+ obj.objDesc_.objFlags_.cpuAccessFlags_ = desc.CPUAccessFlags;
+ obj.objDesc_.objFlags_.miscFlags_ = desc.MiscFlags;
+ // Handle D3D10Texture1D without shared handle - create
+ // a duplicate with shared handle and provide it for CAL
+ // Workaround for subresource > 0 in shared resource
+ if (subres) obj.objDesc_.objFlags_.miscFlags_ &= ~(D3D10_RESOURCE_MISC_SHARED);
+ if (!(obj.objDesc_.objFlags_.miscFlags_ & D3D10_RESOURCE_MISC_SHARED)) {
+ SET_SHARED_FLAGS();
+ SET_BINDING();
+ obj.objDesc_.mipLevels_ = desc.MipLevels = 1;
+ obj.objDesc_.arraySize_ = desc.ArraySize = 1;
+ hr = pDev->CreateTexture1D(&desc, NULL, (ID3D10Texture1D**)&obj.pD3D10Res_);
+ STORE_SHARED_FLAGS(ID3D10Texture1D);
+ }
+ } break;
+
+ case D3D10_RESOURCE_DIMENSION_TEXTURE2D: // = 3,
+ {
+ D3D10_TEXTURE2D_DESC desc;
+ (reinterpret_cast(pRes))->GetDesc(&desc);
+
+ if (subres) {
+ // Calculate correct size of the subresource
+ UINT miplevel = subres;
+ if (desc.ArraySize > 1) {
+ miplevel = subres % desc.MipLevels;
+ }
+ if (miplevel >= desc.MipLevels) {
+ LogWarning("\nMiplevel >= number of miplevels\n");
+ }
+ if (subres >= desc.MipLevels * desc.ArraySize) {
+ return CL_INVALID_VALUE;
+ }
+ desc.Width >>= miplevel;
+ if (!desc.Width) {
+ desc.Width = 1;
+ }
+ desc.Height >>= miplevel;
+ if (!desc.Height) {
+ desc.Height = 1;
+ }
+ }
+ obj.objDesc_.objSize_.Width = desc.Width;
+ obj.objDesc_.objSize_.Height = desc.Height;
+ obj.objDesc_.mipLevels_ = desc.MipLevels;
+ obj.objDesc_.arraySize_ = desc.ArraySize;
+ obj.objDesc_.dxgiFormat_ = desc.Format;
+ obj.objDesc_.dxgiSampleDesc_ = desc.SampleDesc;
+ obj.objDesc_.objFlags_.d3d10Usage_ = desc.Usage;
+ obj.objDesc_.objFlags_.bindFlags_ = desc.BindFlags;
+ obj.objDesc_.objFlags_.cpuAccessFlags_ = desc.CPUAccessFlags;
+ obj.objDesc_.objFlags_.miscFlags_ = desc.MiscFlags;
+ // Handle D3D10Texture2D without shared handle - create
+ // a duplicate with shared handle and provide it for CAL
+ // Workaround for subresource > 0 in shared resource
+ if (subres) obj.objDesc_.objFlags_.miscFlags_ &= ~(D3D10_RESOURCE_MISC_SHARED);
+ if (!(obj.objDesc_.objFlags_.miscFlags_ & D3D10_RESOURCE_MISC_SHARED)) {
+ SET_SHARED_FLAGS();
+ SET_BINDING();
+ obj.objDesc_.mipLevels_ = desc.MipLevels = 1;
+ obj.objDesc_.arraySize_ = desc.ArraySize = 1;
+ hr = pDev->CreateTexture2D(&desc, NULL, (ID3D10Texture2D**)&obj.pD3D10Res_);
+ STORE_SHARED_FLAGS(ID3D10Texture2D);
+ }
+ } break;
+
+ case D3D10_RESOURCE_DIMENSION_TEXTURE3D: // = 4
+ {
+ D3D10_TEXTURE3D_DESC desc;
+ (reinterpret_cast(pRes))->GetDesc(&desc);
+
+ if (subres) {
+ // Calculate correct size of the subresource
+ UINT miplevel = subres;
+ if (miplevel >= desc.MipLevels) {
+ LogWarning("\nMiplevel >= number of miplevels\n");
+ }
+ if (subres >= desc.MipLevels) {
+ return CL_INVALID_VALUE;
+ }
+ desc.Width >>= miplevel;
+ if (!desc.Width) {
+ desc.Width = 1;
+ }
+ desc.Height >>= miplevel;
+ if (!desc.Height) {
+ desc.Height = 1;
+ }
+ desc.Depth >>= miplevel;
+ if (!desc.Depth) {
+ desc.Depth = 1;
+ }
+ }
+ obj.objDesc_.objSize_.Width = desc.Width;
+ obj.objDesc_.objSize_.Height = desc.Height;
+ obj.objDesc_.objSize_.Depth = desc.Depth;
+ obj.objDesc_.mipLevels_ = desc.MipLevels;
+ obj.objDesc_.dxgiFormat_ = desc.Format;
+ obj.objDesc_.objFlags_.d3d10Usage_ = desc.Usage;
+ obj.objDesc_.objFlags_.bindFlags_ = desc.BindFlags;
+ obj.objDesc_.objFlags_.cpuAccessFlags_ = desc.CPUAccessFlags;
+ obj.objDesc_.objFlags_.miscFlags_ = desc.MiscFlags;
+ // Handle D3D10Texture3D without shared handle - create
+ // a duplicate with shared handle and provide it for CAL
+ // Workaround for subresource > 0 in shared resource
+ if (obj.objDesc_.mipLevels_ > 1)
+ obj.objDesc_.objFlags_.miscFlags_ &= ~(D3D10_RESOURCE_MISC_SHARED);
+ if (!(obj.objDesc_.objFlags_.miscFlags_ & D3D10_RESOURCE_MISC_SHARED)) {
+ SET_SHARED_FLAGS();
+ SET_BINDING();
+ obj.objDesc_.mipLevels_ = desc.MipLevels = 1;
+ hr = pDev->CreateTexture3D(&desc, NULL, (ID3D10Texture3D**)&obj.pD3D10Res_);
+ STORE_SHARED_FLAGS(ID3D10Texture3D);
+ }
+ } break;
+
+ default:
+ LogError("unknown type of D3D10 resource");
+ return CL_INVALID_D3D10_RESOURCE_KHR;
+ }
+ obj.subRes_ = subres;
+ pDev->Release();
+ // Check for CL format compatibilty
+ if (obj.objDesc_.objDim_ != D3D10_RESOURCE_DIMENSION_BUFFER) {
+ cl_image_format clFmt = obj.getCLFormatFromDXGI(obj.objDesc_.dxgiFormat_);
+ amd::Image::Format imageFormat(clFmt);
+ if (!imageFormat.isSupported(amdContext)) {
+ return CL_INVALID_IMAGE_FORMAT_DESCRIPTOR;
+ }
+ }
+ resources_.push_back(std::make_pair(pRes, subres));
+ return CL_SUCCESS;
}
-bool
-D3D10Object::copySharedToOrig()
-{
- // Don't copy if there is no orig
- if (NULL == getD3D10ResOrig()) return true;
+bool D3D10Object::copyOrigToShared() {
+ // Don't copy if there is no orig
+ if (NULL == getD3D10ResOrig()) return true;
- ID3D10Device *d3dDev;
- pD3D10Res_->GetDevice(&d3dDev);
- if(!d3dDev) {
- LogError("\nCannot get D3D10 device from D3D10 resource\n");
- return false;
- }
+ ID3D10Device* d3dDev;
+ pD3D10Res_->GetDevice(&d3dDev);
+ if (!d3dDev) {
+ LogError("\nCannot get D3D10 device from D3D10 resource\n");
+ return false;
+ }
+ // Any usage source can be read by GPU
+ d3dDev->CopySubresourceRegion(pD3D10Res_, 0, 0, 0, 0, pD3D10ResOrig_, subRes_, NULL);
- d3dDev->CopySubresourceRegion(pD3D10ResOrig_, subRes_, 0, 0, 0,
- pD3D10Res_, 0, NULL);
+ // Flush D3D queues and make sure D3D stuff is finished
+ d3dDev->Flush();
+ pQuery_->End();
+ BOOL data;
+ while (S_OK != pQuery_->GetData(&data, sizeof(BOOL), 0) && data != TRUE) {
+ }
- d3dDev->Release();
- return true;
+ d3dDev->Release();
+ return true;
+}
+
+bool D3D10Object::copySharedToOrig() {
+ // Don't copy if there is no orig
+ if (NULL == getD3D10ResOrig()) return true;
+
+ ID3D10Device* d3dDev;
+ pD3D10Res_->GetDevice(&d3dDev);
+ if (!d3dDev) {
+ LogError("\nCannot get D3D10 device from D3D10 resource\n");
+ return false;
+ }
+
+ d3dDev->CopySubresourceRegion(pD3D10ResOrig_, subRes_, 0, 0, 0, pD3D10Res_, 0, NULL);
+
+ d3dDev->Release();
+ return true;
}
std::vector> D3D10Object::resources_;
@@ -1501,407 +1400,345 @@ Monitor D3D10Object::resLock_;
//
// Class BufferD3D10 implementation
//
-void
-BufferD3D10::initDeviceMemory()
-{
- deviceMemories_ = reinterpret_cast(
- reinterpret_cast(this) + sizeof(BufferD3D10));
- memset(deviceMemories_, 0,
- context_().devices().size() * sizeof(DeviceMemory));
+void BufferD3D10::initDeviceMemory() {
+ deviceMemories_ =
+ reinterpret_cast(reinterpret_cast(this) + sizeof(BufferD3D10));
+ memset(deviceMemories_, 0, context_().devices().size() * sizeof(DeviceMemory));
}
-bool
-BufferD3D10::mapExtObjectInCQThread()
-{
- void* pCpuMem = NULL;
- HRESULT hr;
- D3D10_MAP gpuMap;
- UINT cpuAccess;
+bool BufferD3D10::mapExtObjectInCQThread() {
+ void* pCpuMem = NULL;
+ HRESULT hr;
+ D3D10_MAP gpuMap;
+ UINT cpuAccess;
- if (getMemFlags() & CL_MEM_READ_WRITE) {
- gpuMap = D3D10_MAP_READ_WRITE;
- cpuAccess = D3D10_CPU_ACCESS_READ | D3D10_CPU_ACCESS_WRITE;
+ if (getMemFlags() & CL_MEM_READ_WRITE) {
+ gpuMap = D3D10_MAP_READ_WRITE;
+ cpuAccess = D3D10_CPU_ACCESS_READ | D3D10_CPU_ACCESS_WRITE;
+ } else if (getMemFlags() & CL_MEM_READ_ONLY) {
+ gpuMap = D3D10_MAP_READ;
+ cpuAccess = D3D10_CPU_ACCESS_READ | D3D10_CPU_ACCESS_WRITE;
+ } else if (getMemFlags() & CL_MEM_WRITE_ONLY) {
+ gpuMap = D3D10_MAP_WRITE;
+ cpuAccess = D3D10_CPU_ACCESS_READ | D3D10_CPU_ACCESS_WRITE;
+ } else {
+ // Should not get here, the flags had been checked before
+ LogError("\nInvalid memrory flags");
+ return false;
+ }
+
+ if (getUsage() == D3D10_USAGE_STAGING) {
+ // Can map directly
+ hr = reinterpret_cast(getD3D10Resource())->Map(gpuMap, 0, &pCpuMem);
+ if (hr != S_OK || !pCpuMem) {
+ LogError("Cannot map ID3D10Buffer object to CPU memory");
+ return false;
}
- else if (getMemFlags() & CL_MEM_READ_ONLY) {
- gpuMap = D3D10_MAP_READ;
- cpuAccess = D3D10_CPU_ACCESS_READ | D3D10_CPU_ACCESS_WRITE;
+ } else {
+ // The buffer need to be mapped indirectly
+ // Create auxiliary buffer
+ ID3D10Device* pD3D10Dev;
+ getD3D10Resource()->GetDevice(&pD3D10Dev);
+ if (!pD3D10Dev) {
+ LogError("\nCannot get D3D10 device");
+ return false;
}
- else if (getMemFlags() & CL_MEM_WRITE_ONLY) {
- gpuMap = D3D10_MAP_WRITE;
- cpuAccess = D3D10_CPU_ACCESS_READ | D3D10_CPU_ACCESS_WRITE;
+ pD3D10Dev->Release();
+ D3D10_BUFFER_DESC bufDesc = {getResourceByteSize(), D3D10_USAGE_STAGING, 0, cpuAccess, 0};
+ ID3D10Buffer* pAuxBuf;
+ hr = pD3D10Dev->CreateBuffer(&bufDesc, NULL, &pAuxBuf);
+ if (hr != S_OK || !pAuxBuf) {
+ LogError("\nCannot create auxiliary buffer");
+ return false;
}
- else {
- // Should not get here, the flags had been checked before
- LogError("\nInvalid memrory flags");
+ setD3D10AuxRes(pAuxBuf);
+ // Copy contents of original buffer to auxiliary
+ pD3D10Dev->CopyResource(pAuxBuf, getD3D10Resource());
+ // Now map the aux buffer
+ hr = pAuxBuf->Map(gpuMap, 0, &pCpuMem);
+ if (hr != S_OK || !pCpuMem) {
+ LogError("Cannot map D3D10 auxiliary buffer to CPU memory");
+ return false;
+ }
+ }
+
+ setHostMem(pCpuMem);
+ return true;
+}
+
+bool BufferD3D10::unmapExtObjectInCQThread() {
+ if (getMemFlags() & (CL_MEM_READ_WRITE | CL_MEM_WRITE_ONLY)) {
+ if (getD3D10AuxRes()) {
+ // Need to copy data from aux to original
+ reinterpret_cast(getD3D10AuxRes())->Unmap();
+ ID3D10Device* pD3D10Dev;
+ getD3D10AuxRes()->GetDevice(&pD3D10Dev);
+ if (!pD3D10Dev) {
+ LogError("\nCannot get D3D10 device");
return false;
+ }
+ pD3D10Dev->Release();
+ pD3D10Dev->CopyResource(getD3D10Resource(), getD3D10AuxRes());
+ getD3D10AuxRes()->Release();
+ setD3D10AuxRes(NULL);
+ } else {
+ reinterpret_cast(getD3D10Resource())->Unmap();
}
-
- if(getUsage() == D3D10_USAGE_STAGING) {
- // Can map directly
- hr = reinterpret_cast(
- getD3D10Resource())->Map(gpuMap, 0, &pCpuMem);
- if(hr != S_OK || !pCpuMem) {
- LogError("Cannot map ID3D10Buffer object to CPU memory");
- return false;
- }
+ } else {
+ // Just unmap everything, no need to copy contents
+ if (getD3D10AuxRes()) {
+ reinterpret_cast(getD3D10AuxRes())->Unmap();
+ getD3D10AuxRes()->Release();
+ setD3D10AuxRes(NULL);
+ } else {
+ reinterpret_cast(getD3D10Resource())->Unmap();
}
- else {
- // The buffer need to be mapped indirectly
- // Create auxiliary buffer
- ID3D10Device* pD3D10Dev;
- getD3D10Resource()->GetDevice(&pD3D10Dev);
- if(!pD3D10Dev) {
- LogError("\nCannot get D3D10 device");
- return false;
- }
- pD3D10Dev->Release();
- D3D10_BUFFER_DESC bufDesc = {
- getResourceByteSize(),
- D3D10_USAGE_STAGING,
- 0,
- cpuAccess,
- 0};
- ID3D10Buffer* pAuxBuf;
- hr = pD3D10Dev->CreateBuffer(&bufDesc, NULL, &pAuxBuf);
- if(hr != S_OK || !pAuxBuf) {
- LogError("\nCannot create auxiliary buffer");
- return false;
- }
- setD3D10AuxRes(pAuxBuf);
- // Copy contents of original buffer to auxiliary
- pD3D10Dev->CopyResource(pAuxBuf, getD3D10Resource());
- // Now map the aux buffer
- hr = pAuxBuf->Map(gpuMap, 0, &pCpuMem);
- if(hr != S_OK || !pCpuMem) {
- LogError("Cannot map D3D10 auxiliary buffer to CPU memory");
- return false;
- }
- }
-
- setHostMem(pCpuMem);
- return true;
-}
-
-bool
-BufferD3D10::unmapExtObjectInCQThread()
-{
- if(getMemFlags() & (CL_MEM_READ_WRITE | CL_MEM_WRITE_ONLY)) {
- if(getD3D10AuxRes()) {
- // Need to copy data from aux to original
- reinterpret_cast(getD3D10AuxRes())->Unmap();
- ID3D10Device* pD3D10Dev;
- getD3D10AuxRes()->GetDevice(&pD3D10Dev);
- if(!pD3D10Dev) {
- LogError("\nCannot get D3D10 device");
- return false;
- }
- pD3D10Dev->Release();
- pD3D10Dev->CopyResource(getD3D10Resource(), getD3D10AuxRes());
- getD3D10AuxRes()->Release();
- setD3D10AuxRes(NULL);
- }
- else {
- reinterpret_cast(getD3D10Resource())->Unmap();
- }
- }
- else {
- // Just unmap everything, no need to copy contents
- if(getD3D10AuxRes()) {
- reinterpret_cast(getD3D10AuxRes())->Unmap();
- getD3D10AuxRes()->Release();
- setD3D10AuxRes(NULL);
- }
- else {
- reinterpret_cast(getD3D10Resource())->Unmap();
- }
- }
- setHostMem(NULL);
- return true;
+ }
+ setHostMem(NULL);
+ return true;
}
//
// Class Image1DD3D10 implementation
//
-void
-Image1DD3D10::initDeviceMemory()
-{
- deviceMemories_ = reinterpret_cast(
- reinterpret_cast(this) + sizeof(Image1DD3D10));
- memset(deviceMemories_, 0,
- context_().devices().size() * sizeof(DeviceMemory));
+void Image1DD3D10::initDeviceMemory() {
+ deviceMemories_ =
+ reinterpret_cast(reinterpret_cast(this) + sizeof(Image1DD3D10));
+ memset(deviceMemories_, 0, context_().devices().size() * sizeof(DeviceMemory));
}
-bool
-Image1DD3D10::mapExtObjectInCQThread()
-{
- LogError("\nImage1DD3D10::mapExtObjectInCQThread() is not implemented yet\n");
- return false;
+bool Image1DD3D10::mapExtObjectInCQThread() {
+ LogError("\nImage1DD3D10::mapExtObjectInCQThread() is not implemented yet\n");
+ return false;
}
-bool
-Image1DD3D10::unmapExtObjectInCQThread()
-{
- LogError("\nImage1DD3D10::unmapExtObjectInCQThread() is not implemented yet\n");
- return false;
+bool Image1DD3D10::unmapExtObjectInCQThread() {
+ LogError("\nImage1DD3D10::unmapExtObjectInCQThread() is not implemented yet\n");
+ return false;
}
//
// Class Image2DD3D10 implementation
//
-void
-Image2DD3D10::initDeviceMemory()
-{
- deviceMemories_ = reinterpret_cast(
- reinterpret_cast(this) + sizeof(Image2DD3D10));
- memset(deviceMemories_, 0,
- context_().devices().size() * sizeof(DeviceMemory));
+void Image2DD3D10::initDeviceMemory() {
+ deviceMemories_ =
+ reinterpret_cast(reinterpret_cast(this) + sizeof(Image2DD3D10));
+ memset(deviceMemories_, 0, context_().devices().size() * sizeof(DeviceMemory));
}
-bool
-Image2DD3D10::mapExtObjectInCQThread()
-{
- D3D10_MAPPED_TEXTURE2D texture2D;
- HRESULT hr;
- D3D10_MAP gpuMap;
- UINT cpuAccess;
+bool Image2DD3D10::mapExtObjectInCQThread() {
+ D3D10_MAPPED_TEXTURE2D texture2D;
+ HRESULT hr;
+ D3D10_MAP gpuMap;
+ UINT cpuAccess;
- if (getMemFlags() & CL_MEM_READ_WRITE) {
- gpuMap = D3D10_MAP_READ_WRITE;
- cpuAccess = D3D10_CPU_ACCESS_READ | D3D10_CPU_ACCESS_WRITE;
+ if (getMemFlags() & CL_MEM_READ_WRITE) {
+ gpuMap = D3D10_MAP_READ_WRITE;
+ cpuAccess = D3D10_CPU_ACCESS_READ | D3D10_CPU_ACCESS_WRITE;
+ } else if (getMemFlags() & CL_MEM_READ_ONLY) {
+ gpuMap = D3D10_MAP_READ;
+ cpuAccess = D3D10_CPU_ACCESS_READ | D3D10_CPU_ACCESS_WRITE;
+ } else if (getMemFlags() & CL_MEM_WRITE_ONLY) {
+ gpuMap = D3D10_MAP_WRITE;
+ cpuAccess = D3D10_CPU_ACCESS_READ | D3D10_CPU_ACCESS_WRITE;
+ } else {
+ // Should not get here, the flags had been checked before
+ LogError("\nInvalid memrory flags");
+ return false;
+ }
+
+ if (getUsage() == D3D10_USAGE_STAGING) {
+ // Can map directly
+ hr = reinterpret_cast(getD3D10Resource())
+ ->Map(getSubresource(), gpuMap, 0, &texture2D);
+ if (hr != S_OK || !texture2D.pData) {
+ LogError("Cannot map ID3D10Texture2D object to CPU memory");
+ return false;
}
- else if (getMemFlags() & CL_MEM_READ_ONLY) {
- gpuMap = D3D10_MAP_READ;
- cpuAccess = D3D10_CPU_ACCESS_READ | D3D10_CPU_ACCESS_WRITE;
+ } else {
+ // The texture needs to be mapped indirectly.
+ // Create auxiliary texture.
+ ID3D10Device* pD3D10Dev;
+ getD3D10Resource()->GetDevice(&pD3D10Dev);
+ if (!pD3D10Dev) {
+ LogError("\nCannot get D3D10 device");
+ return false;
}
- else if (getMemFlags() & CL_MEM_WRITE_ONLY) {
- gpuMap = D3D10_MAP_WRITE;
- cpuAccess = D3D10_CPU_ACCESS_READ | D3D10_CPU_ACCESS_WRITE;
+ pD3D10Dev->Release();
+ D3D10_TEXTURE2D_DESC texDesc;
+ reinterpret_cast(getD3D10Resource())->GetDesc(&texDesc);
+ texDesc.Usage = D3D10_USAGE_STAGING;
+ texDesc.MipLevels = 1;
+ texDesc.BindFlags = 0;
+ texDesc.CPUAccessFlags = cpuAccess;
+ texDesc.MiscFlags = 0;
+ ID3D10Texture2D* pAuxTex;
+ hr = pD3D10Dev->CreateTexture2D(&texDesc, NULL, &pAuxTex);
+ if (hr != S_OK) {
+ LogError("\nCannot create auxiliary 2D texture");
+ return false;
}
- else {
- // Should not get here, the flags had been checked before
- LogError("\nInvalid memrory flags");
+ setD3D10AuxRes(pAuxTex);
+ // Copy contents of original texture to auxiliary
+ pD3D10Dev->CopyResource(pAuxTex, getD3D10Resource());
+ // Now map the aux texture
+ hr = pAuxTex->Map(0, gpuMap, 0, &texture2D);
+ if (hr != S_OK || !texture2D.pData) {
+ LogError("Cannot map D3D10 auxiliary 2D texture to CPU memory");
+ return false;
+ }
+ }
+
+ setHostMem(texture2D.pData);
+ return true;
+}
+
+bool Image2DD3D10::unmapExtObjectInCQThread() {
+ if (getMemFlags() & (CL_MEM_READ_WRITE | CL_MEM_WRITE_ONLY)) {
+ if (getD3D10AuxRes()) {
+ // Need to copy data from aux to original
+ reinterpret_cast(getD3D10AuxRes())->Unmap(0);
+ ID3D10Device* pD3D10Dev;
+ getD3D10AuxRes()->GetDevice(&pD3D10Dev);
+ if (!pD3D10Dev) {
+ LogError("\nCannot get D3D10 device");
return false;
+ }
+ pD3D10Dev->Release();
+ pD3D10Dev->CopyResource(getD3D10Resource(), getD3D10AuxRes());
+ getD3D10AuxRes()->Release();
+ setD3D10AuxRes(NULL);
+ } else {
+ reinterpret_cast(getD3D10Resource())->Unmap(getSubresource());
}
-
- if(getUsage() == D3D10_USAGE_STAGING) {
- // Can map directly
- hr = reinterpret_cast(getD3D10Resource())
- ->Map(getSubresource(), gpuMap, 0, &texture2D);
- if(hr != S_OK || !texture2D.pData) {
- LogError("Cannot map ID3D10Texture2D object to CPU memory");
- return false;
- }
+ } else {
+ // Just unmap everything, no need to copy contents
+ if (getD3D10AuxRes()) {
+ reinterpret_cast(getD3D10AuxRes())->Unmap(0);
+ getD3D10AuxRes()->Release();
+ setD3D10AuxRes(NULL);
+ } else {
+ reinterpret_cast(getD3D10Resource())->Unmap(getSubresource());
}
- else {
- // The texture needs to be mapped indirectly.
- // Create auxiliary texture.
- ID3D10Device* pD3D10Dev;
- getD3D10Resource()->GetDevice(&pD3D10Dev);
- if(!pD3D10Dev) {
- LogError("\nCannot get D3D10 device");
- return false;
- }
- pD3D10Dev->Release();
- D3D10_TEXTURE2D_DESC texDesc;
- reinterpret_cast(getD3D10Resource())
- ->GetDesc(&texDesc);
- texDesc.Usage = D3D10_USAGE_STAGING;
- texDesc.MipLevels = 1;
- texDesc.BindFlags = 0;
- texDesc.CPUAccessFlags = cpuAccess;
- texDesc.MiscFlags = 0;
- ID3D10Texture2D* pAuxTex;
- hr = pD3D10Dev->CreateTexture2D(&texDesc, NULL, &pAuxTex);
- if(hr != S_OK) {
- LogError("\nCannot create auxiliary 2D texture");
- return false;
- }
- setD3D10AuxRes(pAuxTex);
- // Copy contents of original texture to auxiliary
- pD3D10Dev->CopyResource(pAuxTex, getD3D10Resource());
- // Now map the aux texture
- hr = pAuxTex->Map(0, gpuMap, 0, &texture2D);
- if(hr != S_OK || !texture2D.pData) {
- LogError("Cannot map D3D10 auxiliary 2D texture to CPU memory");
- return false;
- }
- }
-
- setHostMem(texture2D.pData);
- return true;
-}
-
-bool
-Image2DD3D10::unmapExtObjectInCQThread()
-{
- if(getMemFlags() & (CL_MEM_READ_WRITE | CL_MEM_WRITE_ONLY)) {
- if(getD3D10AuxRes()) {
- // Need to copy data from aux to original
- reinterpret_cast(getD3D10AuxRes())->Unmap(0);
- ID3D10Device* pD3D10Dev;
- getD3D10AuxRes()->GetDevice(&pD3D10Dev);
- if(!pD3D10Dev) {
- LogError("\nCannot get D3D10 device");
- return false;
- }
- pD3D10Dev->Release();
- pD3D10Dev->CopyResource(getD3D10Resource(), getD3D10AuxRes());
- getD3D10AuxRes()->Release();
- setD3D10AuxRes(NULL);
- }
- else {
- reinterpret_cast(getD3D10Resource())
- ->Unmap(getSubresource());
- }
- }
- else {
- // Just unmap everything, no need to copy contents
- if(getD3D10AuxRes()) {
- reinterpret_cast(getD3D10AuxRes())->Unmap(0);
- getD3D10AuxRes()->Release();
- setD3D10AuxRes(NULL);
- }
- else {
- reinterpret_cast(getD3D10Resource())
- ->Unmap(getSubresource());
- }
- }
- setHostMem(NULL);
- return true;
+ }
+ setHostMem(NULL);
+ return true;
}
//
// Class Image3DD3D10 implementation
//
-void
-Image3DD3D10::initDeviceMemory()
-{
- deviceMemories_ = reinterpret_cast(
- reinterpret_cast(this) + sizeof(Image3DD3D10));
- memset(deviceMemories_, 0,
- context_().devices().size() * sizeof(DeviceMemory));
+void Image3DD3D10::initDeviceMemory() {
+ deviceMemories_ =
+ reinterpret_cast(reinterpret_cast(this) + sizeof(Image3DD3D10));
+ memset(deviceMemories_, 0, context_().devices().size() * sizeof(DeviceMemory));
}
-bool
-Image3DD3D10::mapExtObjectInCQThread()
-{
- D3D10_MAPPED_TEXTURE3D texture3D;
- HRESULT hr;
- D3D10_MAP gpuMap;
- UINT cpuAccess;
+bool Image3DD3D10::mapExtObjectInCQThread() {
+ D3D10_MAPPED_TEXTURE3D texture3D;
+ HRESULT hr;
+ D3D10_MAP gpuMap;
+ UINT cpuAccess;
- if (getMemFlags() & CL_MEM_READ_WRITE) {
- gpuMap = D3D10_MAP_READ_WRITE;
- cpuAccess = D3D10_CPU_ACCESS_READ | D3D10_CPU_ACCESS_WRITE;
+ if (getMemFlags() & CL_MEM_READ_WRITE) {
+ gpuMap = D3D10_MAP_READ_WRITE;
+ cpuAccess = D3D10_CPU_ACCESS_READ | D3D10_CPU_ACCESS_WRITE;
+ } else if (getMemFlags() & CL_MEM_READ_ONLY) {
+ gpuMap = D3D10_MAP_READ;
+ cpuAccess = D3D10_CPU_ACCESS_READ | D3D10_CPU_ACCESS_WRITE;
+ } else if (getMemFlags() & CL_MEM_WRITE_ONLY) {
+ gpuMap = D3D10_MAP_WRITE;
+ cpuAccess = D3D10_CPU_ACCESS_READ | D3D10_CPU_ACCESS_WRITE;
+ } else {
+ // Should not get here, the flags had been checked before
+ LogError("\nInvalid memrory flags");
+ return false;
+ }
+
+ if (getUsage() == D3D10_USAGE_STAGING) {
+ // Can map directly
+ hr = reinterpret_cast(getD3D10Resource())
+ ->Map(getSubresource(), gpuMap, 0, &texture3D);
+ if (hr != S_OK || !texture3D.pData) {
+ LogError("Cannot map ID3D10Texture3D object to CPU memory");
+ return false;
}
- else if (getMemFlags() & CL_MEM_READ_ONLY) {
- gpuMap = D3D10_MAP_READ;
- cpuAccess = D3D10_CPU_ACCESS_READ | D3D10_CPU_ACCESS_WRITE;
+ } else {
+ // The texture needs to be mapped indirectly.
+ // Create auxiliary texture.
+ ID3D10Device* pD3D10Dev;
+ getD3D10Resource()->GetDevice(&pD3D10Dev);
+ if (!pD3D10Dev) {
+ LogError("\nCannot get D3D10 device");
+ return false;
}
- else if (getMemFlags() & CL_MEM_WRITE_ONLY) {
- gpuMap = D3D10_MAP_WRITE;
- cpuAccess = D3D10_CPU_ACCESS_READ | D3D10_CPU_ACCESS_WRITE;
+ pD3D10Dev->Release();
+ D3D10_TEXTURE3D_DESC texDesc;
+ reinterpret_cast(getD3D10Resource())->GetDesc(&texDesc);
+ texDesc.Usage = D3D10_USAGE_STAGING;
+ texDesc.MipLevels = 1;
+ texDesc.BindFlags = 0;
+ texDesc.CPUAccessFlags = cpuAccess;
+ texDesc.MiscFlags = 0;
+ ID3D10Texture3D* pAuxTex;
+ hr = pD3D10Dev->CreateTexture3D(&texDesc, NULL, &pAuxTex);
+ if (hr != S_OK) {
+ LogError("\nCannot create auxiliary 3D texture");
+ return false;
}
- else {
- // Should not get here, the flags had been checked before
- LogError("\nInvalid memrory flags");
+ setD3D10AuxRes(pAuxTex);
+ // Copy contents of original texture to auxiliary
+ pD3D10Dev->CopyResource(pAuxTex, getD3D10Resource());
+ // Now map the aux texture
+ hr = pAuxTex->Map(0, gpuMap, 0, &texture3D);
+ if (hr != S_OK || !texture3D.pData) {
+ LogError("Cannot map D3D10 auxiliary 3D texture to CPU memory");
+ return false;
+ }
+ }
+
+ setHostMem(texture3D.pData);
+ return true;
+}
+
+bool Image3DD3D10::unmapExtObjectInCQThread() {
+ if (getMemFlags() & (CL_MEM_READ_WRITE | CL_MEM_WRITE_ONLY)) {
+ if (getD3D10AuxRes()) {
+ // Need to copy data from aux to original
+ reinterpret_cast(getD3D10AuxRes())->Unmap(0);
+ ID3D10Device* pD3D10Dev;
+ getD3D10AuxRes()->GetDevice(&pD3D10Dev);
+ if (!pD3D10Dev) {
+ LogError("\nCannot get D3D10 device");
return false;
+ }
+ pD3D10Dev->Release();
+ pD3D10Dev->CopyResource(getD3D10Resource(), getD3D10AuxRes());
+ getD3D10AuxRes()->Release();
+ setD3D10AuxRes(NULL);
+ } else {
+ reinterpret_cast(getD3D10Resource())->Unmap(getSubresource());
}
-
- if(getUsage() == D3D10_USAGE_STAGING) {
- // Can map directly
- hr = reinterpret_cast(getD3D10Resource())
- ->Map(getSubresource(), gpuMap, 0, &texture3D);
- if(hr != S_OK || !texture3D.pData) {
- LogError("Cannot map ID3D10Texture3D object to CPU memory");
- return false;
- }
+ } else {
+ // Just unmap everything, no need to copy contents
+ if (getD3D10AuxRes()) {
+ reinterpret_cast(getD3D10AuxRes())->Unmap(0);
+ getD3D10AuxRes()->Release();
+ setD3D10AuxRes(NULL);
+ } else {
+ reinterpret_cast(getD3D10Resource())->Unmap(getSubresource());
}
- else {
- // The texture needs to be mapped indirectly.
- // Create auxiliary texture.
- ID3D10Device* pD3D10Dev;
- getD3D10Resource()->GetDevice(&pD3D10Dev);
- if(!pD3D10Dev) {
- LogError("\nCannot get D3D10 device");
- return false;
- }
- pD3D10Dev->Release();
- D3D10_TEXTURE3D_DESC texDesc;
- reinterpret_cast(getD3D10Resource())
- ->GetDesc(&texDesc);
- texDesc.Usage = D3D10_USAGE_STAGING;
- texDesc.MipLevels = 1;
- texDesc.BindFlags = 0;
- texDesc.CPUAccessFlags = cpuAccess;
- texDesc.MiscFlags = 0;
- ID3D10Texture3D* pAuxTex;
- hr = pD3D10Dev->CreateTexture3D(&texDesc, NULL, &pAuxTex);
- if(hr != S_OK) {
- LogError("\nCannot create auxiliary 3D texture");
- return false;
- }
- setD3D10AuxRes(pAuxTex);
- // Copy contents of original texture to auxiliary
- pD3D10Dev->CopyResource(pAuxTex, getD3D10Resource());
- // Now map the aux texture
- hr = pAuxTex->Map(0, gpuMap, 0, &texture3D);
- if(hr != S_OK || !texture3D.pData) {
- LogError("Cannot map D3D10 auxiliary 3D texture to CPU memory");
- return false;
- }
- }
-
- setHostMem(texture3D.pData);
- return true;
+ }
+ setHostMem(NULL);
+ return true;
}
-bool
-Image3DD3D10::unmapExtObjectInCQThread()
-{
- if(getMemFlags() & (CL_MEM_READ_WRITE | CL_MEM_WRITE_ONLY)) {
- if(getD3D10AuxRes()) {
- // Need to copy data from aux to original
- reinterpret_cast(getD3D10AuxRes())->Unmap(0);
- ID3D10Device* pD3D10Dev;
- getD3D10AuxRes()->GetDevice(&pD3D10Dev);
- if(!pD3D10Dev) {
- LogError("\nCannot get D3D10 device");
- return false;
- }
- pD3D10Dev->Release();
- pD3D10Dev->CopyResource(getD3D10Resource(), getD3D10AuxRes());
- getD3D10AuxRes()->Release();
- setD3D10AuxRes(NULL);
- }
- else {
- reinterpret_cast(getD3D10Resource())
- ->Unmap(getSubresource());
- }
- }
- else {
- // Just unmap everything, no need to copy contents
- if(getD3D10AuxRes()) {
- reinterpret_cast(getD3D10AuxRes())->Unmap(0);
- getD3D10AuxRes()->Release();
- setD3D10AuxRes(NULL);
- }
- else {
- reinterpret_cast(getD3D10Resource())
- ->Unmap(getSubresource());
- }
- }
- setHostMem(NULL);
- return true;
-}
-
-} //namespace amd
-
-#endif //_WIN32
+} // namespace amd
+#endif //_WIN32
diff --git a/opencl/api/opencl/amdocl/cl_d3d11.cpp b/opencl/api/opencl/amdocl/cl_d3d11.cpp
index 58e99237f5..8f9d4516e3 100644
--- a/opencl/api/opencl/amdocl/cl_d3d11.cpp
+++ b/opencl/api/opencl/amdocl/cl_d3d11.cpp
@@ -16,7 +16,7 @@
#include
#include
-#define DXGI_FORMAT_NV12 103
+#define DXGI_FORMAT_NV12 103
/*! \addtogroup API
* @{
@@ -35,132 +35,122 @@
* @{
*/
-RUNTIME_ENTRY(cl_int, 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_int errcode;
- ID3D11Device* d3d11_device = NULL;
- cl_device_id* gpu_devices;
- cl_uint num_gpu_devices = 0;
- bool create_d3d11Device = false;
- static const bool VALIDATE_ONLY = true;
- HMODULE d3d11Module = NULL;
+RUNTIME_ENTRY(cl_int, 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_int errcode;
+ ID3D11Device* d3d11_device = NULL;
+ cl_device_id* gpu_devices;
+ cl_uint num_gpu_devices = 0;
+ bool create_d3d11Device = false;
+ static const bool VALIDATE_ONLY = true;
+ HMODULE d3d11Module = NULL;
- if (platform != NULL && platform != AMD_PLATFORM) {
- LogWarning("\"platrform\" is not a valid AMD platform");
- return CL_INVALID_PLATFORM;
- }
- if(((num_entries > 0 || num_devices == NULL) && devices == NULL)
- || (num_entries == 0 && devices != NULL)) {
- return CL_INVALID_VALUE;
- }
- // Get GPU devices
- errcode = clGetDeviceIDs(NULL, CL_DEVICE_TYPE_GPU, 0, NULL, &num_gpu_devices);
- if (errcode != CL_SUCCESS && errcode != CL_DEVICE_NOT_FOUND) {
- return CL_INVALID_VALUE;
- }
+ if (platform != NULL && platform != AMD_PLATFORM) {
+ LogWarning("\"platrform\" is not a valid AMD platform");
+ return CL_INVALID_PLATFORM;
+ }
+ if (((num_entries > 0 || num_devices == NULL) && devices == NULL) ||
+ (num_entries == 0 && devices != NULL)) {
+ return CL_INVALID_VALUE;
+ }
+ // Get GPU devices
+ errcode = clGetDeviceIDs(NULL, CL_DEVICE_TYPE_GPU, 0, NULL, &num_gpu_devices);
+ if (errcode != CL_SUCCESS && errcode != CL_DEVICE_NOT_FOUND) {
+ return CL_INVALID_VALUE;
+ }
- if (!num_gpu_devices) {
- *not_null(num_devices) = 0;
- return CL_DEVICE_NOT_FOUND;
- }
+ if (!num_gpu_devices) {
+ *not_null(num_devices) = 0;
+ return CL_DEVICE_NOT_FOUND;
+ }
- switch(d3d_device_source)
- {
+ switch (d3d_device_source) {
case CL_D3D11_DEVICE_KHR:
- d3d11_device = static_cast(d3d_object);
- break;
- case CL_D3D11_DXGI_ADAPTER_KHR:
- {
- static PFN_D3D11_CREATE_DEVICE dynamicD3D11CreateDevice = NULL;
+ d3d11_device = static_cast(d3d_object);
+ break;
+ case CL_D3D11_DXGI_ADAPTER_KHR: {
+ static PFN_D3D11_CREATE_DEVICE dynamicD3D11CreateDevice = NULL;
- d3d11Module = LoadLibrary("D3D11.dll");
- if (d3d11Module == NULL) {
- return CL_INVALID_PLATFORM;
- }
+ d3d11Module = LoadLibrary("D3D11.dll");
+ if (d3d11Module == NULL) {
+ return CL_INVALID_PLATFORM;
+ }
- dynamicD3D11CreateDevice = (PFN_D3D11_CREATE_DEVICE)GetProcAddress(d3d11Module, "D3D11CreateDevice");
+ dynamicD3D11CreateDevice =
+ (PFN_D3D11_CREATE_DEVICE)GetProcAddress(d3d11Module, "D3D11CreateDevice");
- IDXGIAdapter* dxgi_adapter = static_cast(d3d_object);
- D3D_FEATURE_LEVEL requestedFeatureLevels[] = {D3D_FEATURE_LEVEL_10_0};
- D3D_FEATURE_LEVEL featureLevel = D3D_FEATURE_LEVEL_11_0;
- HRESULT hr = dynamicD3D11CreateDevice(dxgi_adapter, D3D_DRIVER_TYPE_UNKNOWN,
- NULL, 0, requestedFeatureLevels, 1,
- D3D11_SDK_VERSION, &d3d11_device, &featureLevel, NULL);
- if (SUCCEEDED(hr) && (NULL != d3d11_device)) {
- create_d3d11Device = true;
- } else {
- FreeLibrary(d3d11Module);
- return CL_INVALID_VALUE;
- }
- }
- break;
- default:
- LogWarning("\"d3d_device_source\" is invalid");
- return CL_INVALID_VALUE;
- }
-
- switch(d3d_device_set) {
- case CL_PREFERRED_DEVICES_FOR_D3D11_KHR:
- case CL_ALL_DEVICES_FOR_D3D11_KHR:
- {
- gpu_devices = (cl_device_id *) alloca(num_gpu_devices * sizeof(cl_device_id));
-
- errcode = clGetDeviceIDs(NULL, CL_DEVICE_TYPE_GPU, num_gpu_devices, gpu_devices, NULL);
- if (errcode != CL_SUCCESS) {
- break;
- }
-
- std::vector compatible_devices;
- for (cl_uint i = 0; i < num_gpu_devices; ++i) {
-
- void * external_device[amd::Context::DeviceFlagIdx::LastDeviceFlagIdx] = {};
- external_device[amd::Context::DeviceFlagIdx::D3D11DeviceKhrIdx] = d3d11_device;
-
- cl_device_id device = gpu_devices[i];
- if (is_valid(device) &&
- as_amd(device)->bindExternalDevice(amd::Context::Flags::D3D11DeviceKhr,
- external_device, NULL, VALIDATE_ONLY)) {
- compatible_devices.push_back(as_amd(device));
- }
- }
- if (compatible_devices.size() == 0) {
- *not_null(num_devices) = 0;
- errcode = CL_DEVICE_NOT_FOUND;
- break;
- }
-
- std::vector::iterator it = compatible_devices.begin();
- cl_uint compatible_count = std::min(num_entries, (cl_uint)compatible_devices.size());
-
- while (compatible_count--) {
- *devices++ = as_cl(*it++);
- --num_entries;
- }
- while (num_entries--) {
- *devices++ = (cl_device_id) 0;
- }
-
- *not_null(num_devices) = (cl_uint)compatible_devices.size();
- }
- break;
-
- default:
- LogWarning("\"d3d_device_set\" is invalid");
- errcode = CL_INVALID_VALUE;
- }
-
- if (create_d3d11Device) {
- d3d11_device->Release();
+ IDXGIAdapter* dxgi_adapter = static_cast(d3d_object);
+ D3D_FEATURE_LEVEL requestedFeatureLevels[] = {D3D_FEATURE_LEVEL_10_0};
+ D3D_FEATURE_LEVEL featureLevel = D3D_FEATURE_LEVEL_11_0;
+ HRESULT hr = dynamicD3D11CreateDevice(dxgi_adapter, D3D_DRIVER_TYPE_UNKNOWN, NULL, 0,
+ requestedFeatureLevels, 1, D3D11_SDK_VERSION,
+ &d3d11_device, &featureLevel, NULL);
+ if (SUCCEEDED(hr) && (NULL != d3d11_device)) {
+ create_d3d11Device = true;
+ } else {
FreeLibrary(d3d11Module);
- }
- return errcode;
+ return CL_INVALID_VALUE;
+ }
+ } break;
+ default:
+ LogWarning("\"d3d_device_source\" is invalid");
+ return CL_INVALID_VALUE;
+ }
+
+ switch (d3d_device_set) {
+ case CL_PREFERRED_DEVICES_FOR_D3D11_KHR:
+ case CL_ALL_DEVICES_FOR_D3D11_KHR: {
+ gpu_devices = (cl_device_id*)alloca(num_gpu_devices * sizeof(cl_device_id));
+
+ errcode = clGetDeviceIDs(NULL, CL_DEVICE_TYPE_GPU, num_gpu_devices, gpu_devices, NULL);
+ if (errcode != CL_SUCCESS) {
+ break;
+ }
+
+ std::vector compatible_devices;
+ for (cl_uint i = 0; i < num_gpu_devices; ++i) {
+ void* external_device[amd::Context::DeviceFlagIdx::LastDeviceFlagIdx] = {};
+ external_device[amd::Context::DeviceFlagIdx::D3D11DeviceKhrIdx] = d3d11_device;
+
+ cl_device_id device = gpu_devices[i];
+ if (is_valid(device) &&
+ as_amd(device)->bindExternalDevice(amd::Context::Flags::D3D11DeviceKhr, external_device,
+ NULL, VALIDATE_ONLY)) {
+ compatible_devices.push_back(as_amd(device));
+ }
+ }
+ if (compatible_devices.size() == 0) {
+ *not_null(num_devices) = 0;
+ errcode = CL_DEVICE_NOT_FOUND;
+ break;
+ }
+
+ std::vector::iterator it = compatible_devices.begin();
+ cl_uint compatible_count = std::min(num_entries, (cl_uint)compatible_devices.size());
+
+ while (compatible_count--) {
+ *devices++ = as_cl(*it++);
+ --num_entries;
+ }
+ while (num_entries--) {
+ *devices++ = (cl_device_id)0;
+ }
+
+ *not_null(num_devices) = (cl_uint)compatible_devices.size();
+ } break;
+
+ default:
+ LogWarning("\"d3d_device_set\" is invalid");
+ errcode = CL_INVALID_VALUE;
+ }
+
+ if (create_d3d11Device) {
+ d3d11_device->Release();
+ FreeLibrary(d3d11Module);
+ }
+ return errcode;
}
RUNTIME_EXIT
@@ -193,37 +183,31 @@ RUNTIME_EXIT
* \version 1.0r33?
*/
-RUNTIME_ENTRY_RET(cl_mem, clCreateFromD3D11BufferKHR, (
- cl_context context,
- cl_mem_flags flags,
- ID3D11Buffer* pD3DResource,
- cl_int* errcode_ret))
-{
- cl_mem clMemObj = NULL;
+RUNTIME_ENTRY_RET(cl_mem, clCreateFromD3D11BufferKHR,
+ (cl_context context, cl_mem_flags flags, ID3D11Buffer* pD3DResource,
+ cl_int* errcode_ret)) {
+ cl_mem clMemObj = NULL;
- if(!is_valid(context)) {
- *not_null(errcode_ret) = CL_INVALID_CONTEXT;
- LogWarning("invalid parameter \"context\"");
- return clMemObj;
- }
- if(!flags) flags = CL_MEM_READ_WRITE;
- if(!(((flags & CL_MEM_READ_ONLY) == CL_MEM_READ_ONLY)
- || ((flags & CL_MEM_WRITE_ONLY) == CL_MEM_WRITE_ONLY)
- || ((flags & CL_MEM_READ_WRITE) == CL_MEM_READ_WRITE))) {
- *not_null(errcode_ret) = CL_INVALID_VALUE;
- LogWarning("invalid parameter \"flags\"");
- return clMemObj;
- }
- if(!pD3DResource) {
- *not_null(errcode_ret) = CL_INVALID_VALUE;
- LogWarning("parameter \"pD3DResource\" is a NULL pointer");
- return clMemObj;
- }
- return(amd::clCreateBufferFromD3D11ResourceAMD(
- *as_amd(context),
- flags,
- pD3DResource,
- errcode_ret));
+ if (!is_valid(context)) {
+ *not_null(errcode_ret) = CL_INVALID_CONTEXT;
+ LogWarning("invalid parameter \"context\"");
+ return clMemObj;
+ }
+ if (!flags) flags = CL_MEM_READ_WRITE;
+ if (!(((flags & CL_MEM_READ_ONLY) == CL_MEM_READ_ONLY) ||
+ ((flags & CL_MEM_WRITE_ONLY) == CL_MEM_WRITE_ONLY) ||
+ ((flags & CL_MEM_READ_WRITE) == CL_MEM_READ_WRITE))) {
+ *not_null(errcode_ret) = CL_INVALID_VALUE;
+ LogWarning("invalid parameter \"flags\"");
+ return clMemObj;
+ }
+ if (!pD3DResource) {
+ *not_null(errcode_ret) = CL_INVALID_VALUE;
+ LogWarning("parameter \"pD3DResource\" is a NULL pointer");
+ return clMemObj;
+ }
+ return (
+ amd::clCreateBufferFromD3D11ResourceAMD(*as_amd(context), flags, pD3DResource, errcode_ret));
}
RUNTIME_EXIT
@@ -273,67 +257,62 @@ RUNTIME_EXIT
*
* \version 1.0r48?
*/
-RUNTIME_ENTRY_RET(cl_mem, clCreateImageFromD3D11Resource, (
- cl_context context,
- cl_mem_flags flags,
- ID3D11Resource* pD3DResource,
- UINT subresource,
- int* errcode_ret,
- UINT dimension))
-{
- cl_mem clMemObj = NULL;
+RUNTIME_ENTRY_RET(cl_mem, clCreateImageFromD3D11Resource,
+ (cl_context context, cl_mem_flags flags, ID3D11Resource* pD3DResource,
+ UINT subresource, int* errcode_ret, UINT dimension)) {
+ cl_mem clMemObj = NULL;
- if(!is_valid(context)) {
- *not_null(errcode_ret) = CL_INVALID_CONTEXT;
- LogWarning("invalid parameter \"context\"");
- return clMemObj;
- }
- if(!flags) flags = CL_MEM_READ_WRITE;
- if(!(((flags & CL_MEM_READ_ONLY) == CL_MEM_READ_ONLY)
- || ((flags & CL_MEM_WRITE_ONLY) == CL_MEM_WRITE_ONLY)
- || ((flags & CL_MEM_READ_WRITE) == CL_MEM_READ_WRITE))) {
- *not_null(errcode_ret) = CL_INVALID_VALUE;
- LogWarning("invalid parameter \"flags\"");
- return clMemObj;
- }
- if(!pD3DResource) {
- *not_null(errcode_ret) = CL_INVALID_VALUE;
- LogWarning("parameter \"pD3DResource\" is a NULL pointer");
- return clMemObj;
- }
+ if (!is_valid(context)) {
+ *not_null(errcode_ret) = CL_INVALID_CONTEXT;
+ LogWarning("invalid parameter \"context\"");
+ return clMemObj;
+ }
+ if (!flags) flags = CL_MEM_READ_WRITE;
+ if (!(((flags & CL_MEM_READ_ONLY) == CL_MEM_READ_ONLY) ||
+ ((flags & CL_MEM_WRITE_ONLY) == CL_MEM_WRITE_ONLY) ||
+ ((flags & CL_MEM_READ_WRITE) == CL_MEM_READ_WRITE))) {
+ *not_null(errcode_ret) = CL_INVALID_VALUE;
+ LogWarning("invalid parameter \"flags\"");
+ return clMemObj;
+ }
+ if (!pD3DResource) {
+ *not_null(errcode_ret) = CL_INVALID_VALUE;
+ LogWarning("parameter \"pD3DResource\" is a NULL pointer");
+ return clMemObj;
+ }
- // Verify context init'ed for interop
- ID3D11Device* pDev;
- pD3DResource->GetDevice(&pDev);
- if(pDev == NULL) {
- *not_null(errcode_ret) = CL_INVALID_D3D11_DEVICE_KHR;
- LogWarning("Cannot retrieve D3D11 device from D3D11 resource");
- return (cl_mem) 0;
- }
- pDev->Release();
- if (!((*as_amd(context)).info().flags_ & amd::Context::D3D11DeviceKhr)) {
- *not_null(errcode_ret) = CL_INVALID_CONTEXT;
- LogWarning("\"amdContext\" is not created from D3D11 device");
- return (cl_mem) 0;
- }
+ // Verify context init'ed for interop
+ ID3D11Device* pDev;
+ pD3DResource->GetDevice(&pDev);
+ if (pDev == NULL) {
+ *not_null(errcode_ret) = CL_INVALID_D3D11_DEVICE_KHR;
+ LogWarning("Cannot retrieve D3D11 device from D3D11 resource");
+ return (cl_mem)0;
+ }
+ pDev->Release();
+ if (!((*as_amd(context)).info().flags_ & amd::Context::D3D11DeviceKhr)) {
+ *not_null(errcode_ret) = CL_INVALID_CONTEXT;
+ LogWarning("\"amdContext\" is not created from D3D11 device");
+ return (cl_mem)0;
+ }
- // Check for image support
- const std::vector& devices = as_amd(context)->devices();
- bool supportPass = false;
- bool sizePass = false;
- std::vector::const_iterator it;
- for(it = devices.begin(); it != devices.end(); ++it) {
- if((*it)->info().imageSupport_) {
- supportPass = true;
- }
- }
- if(!supportPass) {
- *not_null(errcode_ret) = CL_INVALID_OPERATION;
- LogWarning("there are no devices in context to support images");
- return (cl_mem) 0;
+ // Check for image support
+ const std::vector& devices = as_amd(context)->devices();
+ bool supportPass = false;
+ bool sizePass = false;
+ std::vector::const_iterator it;
+ for (it = devices.begin(); it != devices.end(); ++it) {
+ if ((*it)->info().imageSupport_) {
+ supportPass = true;
}
+ }
+ if (!supportPass) {
+ *not_null(errcode_ret) = CL_INVALID_OPERATION;
+ LogWarning("there are no devices in context to support images");
+ return (cl_mem)0;
+ }
- switch(dimension) {
+ switch (dimension) {
#if 0
case 1:
return(amd::clCreateImage1DFromD3D11ResourceAMD(
@@ -342,27 +321,19 @@ RUNTIME_ENTRY_RET(cl_mem, clCreateImageFromD3D11Resource, (
pD3DResource,
subresource,
errcode_ret));
-#endif //0
+#endif // 0
case 2:
- return(amd::clCreateImage2DFromD3D11ResourceAMD(
- *as_amd(context),
- flags,
- pD3DResource,
- subresource,
- errcode_ret));
+ return (amd::clCreateImage2DFromD3D11ResourceAMD(*as_amd(context), flags, pD3DResource,
+ subresource, errcode_ret));
case 3:
- return(amd::clCreateImage3DFromD3D11ResourceAMD(
- *as_amd(context),
- flags,
- pD3DResource,
- subresource,
- errcode_ret));
+ return (amd::clCreateImage3DFromD3D11ResourceAMD(*as_amd(context), flags, pD3DResource,
+ subresource, errcode_ret));
default:
- break;
- }
+ break;
+ }
- *not_null(errcode_ret) = CL_INVALID_D3D11_RESOURCE_KHR;
- return (cl_mem) 0;
+ *not_null(errcode_ret) = CL_INVALID_D3D11_RESOURCE_KHR;
+ return (cl_mem)0;
}
RUNTIME_EXIT
@@ -370,15 +341,10 @@ RUNTIME_EXIT
* \addtogroup clCreateFromD3D11Texture2DKHR
* @{
*/
-RUNTIME_ENTRY_RET(cl_mem, clCreateFromD3D11Texture2DKHR, (
- cl_context context,
- cl_mem_flags flags,
- ID3D11Texture2D* resource,
- UINT subresource,
- cl_int* errcode_ret))
-{
- return clCreateImageFromD3D11Resource(context, flags, resource,
- subresource, errcode_ret, 2);
+RUNTIME_ENTRY_RET(cl_mem, clCreateFromD3D11Texture2DKHR,
+ (cl_context context, cl_mem_flags flags, ID3D11Texture2D* resource,
+ UINT subresource, cl_int* errcode_ret)) {
+ return clCreateImageFromD3D11Resource(context, flags, resource, subresource, errcode_ret, 2);
}
RUNTIME_EXIT
@@ -386,15 +352,10 @@ RUNTIME_EXIT
* \addtogroup clCreateFromD3D11Texture3DKHR
* @{
*/
-RUNTIME_ENTRY_RET(cl_mem, clCreateFromD3D11Texture3DKHR, (
- cl_context context,
- cl_mem_flags flags,
- ID3D11Texture3D* resource,
- UINT subresource,
- cl_int* errcode_ret))
-{
- return clCreateImageFromD3D11Resource(context, flags, resource,
- subresource, errcode_ret, 3);
+RUNTIME_ENTRY_RET(cl_mem, clCreateFromD3D11Texture3DKHR,
+ (cl_context context, cl_mem_flags flags, ID3D11Texture3D* resource,
+ UINT subresource, cl_int* errcode_ret)) {
+ return clCreateImageFromD3D11Resource(context, flags, resource, subresource, errcode_ret, 3);
}
RUNTIME_EXIT
@@ -402,17 +363,12 @@ RUNTIME_EXIT
* \addtogroup clEnqueueAcquireD3D11ObjectsKHR
* @{
*/
-RUNTIME_ENTRY(cl_int, 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))
-{
- return amd::clEnqueueAcquireExtObjectsAMD(command_queue, num_objects,
- mem_objects, num_events_in_wait_list, event_wait_list, event,
- CL_COMMAND_ACQUIRE_D3D11_OBJECTS_KHR);
+RUNTIME_ENTRY(cl_int, 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)) {
+ return amd::clEnqueueAcquireExtObjectsAMD(command_queue, num_objects, mem_objects,
+ num_events_in_wait_list, event_wait_list, event,
+ CL_COMMAND_ACQUIRE_D3D11_OBJECTS_KHR);
}
RUNTIME_EXIT
@@ -420,17 +376,12 @@ RUNTIME_EXIT
* \addtogroup clEnqueueReleaseD3D11ObjectsKHR
* @{
*/
-RUNTIME_ENTRY(cl_int, 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))
-{
- return amd::clEnqueueReleaseExtObjectsAMD(command_queue, num_objects,
- mem_objects, num_events_in_wait_list, event_wait_list, event,
- CL_COMMAND_RELEASE_D3D11_OBJECTS_KHR);
+RUNTIME_ENTRY(cl_int, 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)) {
+ return amd::clEnqueueReleaseExtObjectsAMD(command_queue, num_objects, mem_objects,
+ num_events_in_wait_list, event_wait_list, event,
+ CL_COMMAND_RELEASE_D3D11_OBJECTS_KHR);
}
RUNTIME_EXIT
@@ -438,63 +389,58 @@ RUNTIME_EXIT
* \addtogroup clGetPlaneFromImageAMD
* @{
*/
-RUNTIME_ENTRY_RET(cl_mem, clGetPlaneFromImageAMD, (
- cl_context context,
- cl_mem mem,
- cl_uint plane,
- cl_int* errcode_ret))
-{
- if(!is_valid(context)) {
- *not_null(errcode_ret) = CL_INVALID_CONTEXT;
- LogWarning("invalid parameter \"context\"");
- return 0;
- }
- if (mem == 0) {
- *not_null(errcode_ret) = CL_INVALID_VALUE;
- return 0;
- }
- if (!is_valid(mem)) {
- *not_null(errcode_ret) = CL_INVALID_MEM_OBJECT;
- return 0;
- }
- amd::Memory* amdMem = as_amd(mem);
- amd::Context& amdContext = *as_amd(context);
- if (amdMem->getInteropObj() == NULL) {
- *not_null(errcode_ret) = CL_INVALID_MEM_OBJECT;
- return 0;
- }
- amd::Image2DD3D11 *pImage = reinterpret_cast(amdMem);
- ID3D11Resource* pD3DResource = pImage->getD3D11Resource();
- // Verify the resource is a 2D texture
- D3D11_RESOURCE_DIMENSION rType;
- pD3DResource->GetType(&rType);
- if(rType != D3D11_RESOURCE_DIMENSION_TEXTURE2D) {
- *not_null(errcode_ret) = CL_INVALID_D3D11_RESOURCE_KHR;
- return (cl_mem) 0;
- }
+RUNTIME_ENTRY_RET(cl_mem, clGetPlaneFromImageAMD,
+ (cl_context context, cl_mem mem, cl_uint plane, cl_int* errcode_ret)) {
+ if (!is_valid(context)) {
+ *not_null(errcode_ret) = CL_INVALID_CONTEXT;
+ LogWarning("invalid parameter \"context\"");
+ return 0;
+ }
+ if (mem == 0) {
+ *not_null(errcode_ret) = CL_INVALID_VALUE;
+ return 0;
+ }
+ if (!is_valid(mem)) {
+ *not_null(errcode_ret) = CL_INVALID_MEM_OBJECT;
+ return 0;
+ }
+ amd::Memory* amdMem = as_amd(mem);
+ amd::Context& amdContext = *as_amd(context);
+ if (amdMem->getInteropObj() == NULL) {
+ *not_null(errcode_ret) = CL_INVALID_MEM_OBJECT;
+ return 0;
+ }
+ amd::Image2DD3D11* pImage = reinterpret_cast(amdMem);
+ ID3D11Resource* pD3DResource = pImage->getD3D11Resource();
+ // Verify the resource is a 2D texture
+ D3D11_RESOURCE_DIMENSION rType;
+ pD3DResource->GetType(&rType);
+ if (rType != D3D11_RESOURCE_DIMENSION_TEXTURE2D) {
+ *not_null(errcode_ret) = CL_INVALID_D3D11_RESOURCE_KHR;
+ return (cl_mem)0;
+ }
- amd::D3D11Object obj;
- int errcode = amd::D3D11Object::initD3D11Object(amdContext, pD3DResource, 0, obj, plane);
- if(CL_SUCCESS != errcode)
- {
- *not_null(errcode_ret) = errcode;
- return (cl_mem) 0;
- }
+ amd::D3D11Object obj;
+ int errcode = amd::D3D11Object::initD3D11Object(amdContext, pD3DResource, 0, obj, plane);
+ if (CL_SUCCESS != errcode) {
+ *not_null(errcode_ret) = errcode;
+ return (cl_mem)0;
+ }
- amd::Image2DD3D11 *pImage2DD3D11 = new (amdContext)
- amd::Image2DD3D11(amdContext, pImage->getMemFlags(), obj);
- if(!pImage2DD3D11) {
- *not_null(errcode_ret) = CL_OUT_OF_HOST_MEMORY;
- return (cl_mem) 0;
- }
- if (!pImage2DD3D11->create()) {
- *not_null(errcode_ret) = CL_MEM_OBJECT_ALLOCATION_FAILURE;
- pImage2DD3D11->release();
- return (cl_mem) 0;
- }
+ amd::Image2DD3D11* pImage2DD3D11 =
+ new (amdContext) amd::Image2DD3D11(amdContext, pImage->getMemFlags(), obj);
+ if (!pImage2DD3D11) {
+ *not_null(errcode_ret) = CL_OUT_OF_HOST_MEMORY;
+ return (cl_mem)0;
+ }
+ if (!pImage2DD3D11->create()) {
+ *not_null(errcode_ret) = CL_MEM_OBJECT_ALLOCATION_FAILURE;
+ pImage2DD3D11->release();
+ return (cl_mem)0;
+ }
- *not_null(errcode_ret) = CL_SUCCESS;
- return as_cl(pImage2DD3D11);
+ *not_null(errcode_ret) = CL_SUCCESS;
+ return as_cl(pImage2DD3D11);
}
RUNTIME_EXIT
@@ -503,15 +449,13 @@ RUNTIME_EXIT
// namespace amd
//
//
-namespace amd
-{
+namespace amd {
/*! @}
* \addtogroup CL-D3D11 interop helper functions
* @{
*/
-
//*******************************************************************
//
// Internal implementation of CL API functions
@@ -520,1049 +464,942 @@ namespace amd
//
// clCreateBufferFromD3D11ResourceAMD
//
-cl_mem clCreateBufferFromD3D11ResourceAMD(
- Context& amdContext,
- cl_mem_flags flags,
- ID3D11Resource* pD3DResource,
- int* errcode_ret)
-{
- // Verify pD3DResource is a buffer
- D3D11_RESOURCE_DIMENSION rType;
- pD3DResource->GetType(&rType);
- if(rType != D3D11_RESOURCE_DIMENSION_BUFFER) {
- *not_null(errcode_ret) = CL_INVALID_D3D11_RESOURCE_KHR;
- return (cl_mem) 0;
- }
+cl_mem clCreateBufferFromD3D11ResourceAMD(Context& amdContext, cl_mem_flags flags,
+ ID3D11Resource* pD3DResource, int* errcode_ret) {
+ // Verify pD3DResource is a buffer
+ D3D11_RESOURCE_DIMENSION rType;
+ pD3DResource->GetType(&rType);
+ if (rType != D3D11_RESOURCE_DIMENSION_BUFFER) {
+ *not_null(errcode_ret) = CL_INVALID_D3D11_RESOURCE_KHR;
+ return (cl_mem)0;
+ }
- D3D11Object obj;
- int errcode = D3D11Object::initD3D11Object(amdContext, pD3DResource, 0, obj);
- if(CL_SUCCESS != errcode)
- {
- *not_null(errcode_ret) = errcode;
- return (cl_mem) 0;
- }
+ D3D11Object obj;
+ int errcode = D3D11Object::initD3D11Object(amdContext, pD3DResource, 0, obj);
+ if (CL_SUCCESS != errcode) {
+ *not_null(errcode_ret) = errcode;
+ return (cl_mem)0;
+ }
- BufferD3D11 *pBufferD3D11 = new (amdContext)
- BufferD3D11(amdContext, flags, obj);
- if(!pBufferD3D11) {
- *not_null(errcode_ret) = CL_OUT_OF_HOST_MEMORY;
- return (cl_mem) 0;
- }
- if (!pBufferD3D11->create()) {
- *not_null(errcode_ret) = CL_MEM_OBJECT_ALLOCATION_FAILURE;
- pBufferD3D11->release();
- return (cl_mem) 0;
- }
+ BufferD3D11* pBufferD3D11 = new (amdContext) BufferD3D11(amdContext, flags, obj);
+ if (!pBufferD3D11) {
+ *not_null(errcode_ret) = CL_OUT_OF_HOST_MEMORY;
+ return (cl_mem)0;
+ }
+ if (!pBufferD3D11->create()) {
+ *not_null(errcode_ret) = CL_MEM_OBJECT_ALLOCATION_FAILURE;
+ pBufferD3D11->release();
+ return (cl_mem)0;
+ }
- *not_null(errcode_ret) = CL_SUCCESS;
- return as_cl(pBufferD3D11);
+ *not_null(errcode_ret) = CL_SUCCESS;
+ return as_cl(pBufferD3D11);
}
//
// clCreateImage2DFromD3D11ResourceAMD
//
-cl_mem clCreateImage2DFromD3D11ResourceAMD(
- Context& amdContext,
- cl_mem_flags flags,
- ID3D11Resource* pD3DResource,
- UINT subresource,
- int* errcode_ret)
-{
- // Verify the resource is a 2D texture
- D3D11_RESOURCE_DIMENSION rType;
- pD3DResource->GetType(&rType);
- if(rType != D3D11_RESOURCE_DIMENSION_TEXTURE2D) {
- *not_null(errcode_ret) = CL_INVALID_D3D11_RESOURCE_KHR;
- return (cl_mem) 0;
- }
+cl_mem clCreateImage2DFromD3D11ResourceAMD(Context& amdContext, cl_mem_flags flags,
+ ID3D11Resource* pD3DResource, UINT subresource,
+ int* errcode_ret) {
+ // Verify the resource is a 2D texture
+ D3D11_RESOURCE_DIMENSION rType;
+ pD3DResource->GetType(&rType);
+ if (rType != D3D11_RESOURCE_DIMENSION_TEXTURE2D) {
+ *not_null(errcode_ret) = CL_INVALID_D3D11_RESOURCE_KHR;
+ return (cl_mem)0;
+ }
- D3D11Object obj;
- int errcode = D3D11Object::initD3D11Object(amdContext, pD3DResource, subresource, obj);
- if(CL_SUCCESS != errcode)
- {
- *not_null(errcode_ret) = errcode;
- return (cl_mem) 0;
- }
+ D3D11Object obj;
+ int errcode = D3D11Object::initD3D11Object(amdContext, pD3DResource, subresource, obj);
+ if (CL_SUCCESS != errcode) {
+ *not_null(errcode_ret) = errcode;
+ return (cl_mem)0;
+ }
- Image2DD3D11 *pImage2DD3D11 = new (amdContext)
- Image2DD3D11(amdContext, flags, obj);
- if(!pImage2DD3D11) {
- *not_null(errcode_ret) = CL_OUT_OF_HOST_MEMORY;
- return (cl_mem) 0;
- }
- if (!pImage2DD3D11->create()) {
- *not_null(errcode_ret) = CL_MEM_OBJECT_ALLOCATION_FAILURE;
- pImage2DD3D11->release();
- return (cl_mem) 0;
- }
+ Image2DD3D11* pImage2DD3D11 = new (amdContext) Image2DD3D11(amdContext, flags, obj);
+ if (!pImage2DD3D11) {
+ *not_null(errcode_ret) = CL_OUT_OF_HOST_MEMORY;
+ return (cl_mem)0;
+ }
+ if (!pImage2DD3D11->create()) {
+ *not_null(errcode_ret) = CL_MEM_OBJECT_ALLOCATION_FAILURE;
+ pImage2DD3D11->release();
+ return (cl_mem)0;
+ }
- *not_null(errcode_ret) = CL_SUCCESS;
- return as_cl(pImage2DD3D11);
+ *not_null(errcode_ret) = CL_SUCCESS;
+ return as_cl(pImage2DD3D11);
}
//
// clCreateImage2DFromD3D11ResourceAMD
//
-cl_mem clCreateImage3DFromD3D11ResourceAMD(
- Context& amdContext,
- cl_mem_flags flags,
- ID3D11Resource* pD3DResource,
- UINT subresource,
- int* errcode_ret)
-{
- // Verify the resource is a 2D texture
- D3D11_RESOURCE_DIMENSION rType;
- pD3DResource->GetType(&rType);
- if(rType != D3D11_RESOURCE_DIMENSION_TEXTURE3D) {
- *not_null(errcode_ret) = CL_INVALID_D3D11_RESOURCE_KHR;
- return (cl_mem) 0;
- }
+cl_mem clCreateImage3DFromD3D11ResourceAMD(Context& amdContext, cl_mem_flags flags,
+ ID3D11Resource* pD3DResource, UINT subresource,
+ int* errcode_ret) {
+ // Verify the resource is a 2D texture
+ D3D11_RESOURCE_DIMENSION rType;
+ pD3DResource->GetType(&rType);
+ if (rType != D3D11_RESOURCE_DIMENSION_TEXTURE3D) {
+ *not_null(errcode_ret) = CL_INVALID_D3D11_RESOURCE_KHR;
+ return (cl_mem)0;
+ }
- D3D11Object obj;
- int errcode = D3D11Object::initD3D11Object(amdContext, pD3DResource, subresource, obj);
- if(CL_SUCCESS != errcode)
- {
- *not_null(errcode_ret) = errcode;
- return (cl_mem) 0;
- }
+ D3D11Object obj;
+ int errcode = D3D11Object::initD3D11Object(amdContext, pD3DResource, subresource, obj);
+ if (CL_SUCCESS != errcode) {
+ *not_null(errcode_ret) = errcode;
+ return (cl_mem)0;
+ }
- Image3DD3D11 *pImage3DD3D11 = new (amdContext)
- Image3DD3D11(amdContext, flags, obj);
- if(!pImage3DD3D11) {
- *not_null(errcode_ret) = CL_OUT_OF_HOST_MEMORY;
- return (cl_mem) 0;
- }
- if (!pImage3DD3D11->create()) {
- *not_null(errcode_ret) = CL_MEM_OBJECT_ALLOCATION_FAILURE;
- pImage3DD3D11->release();
- return (cl_mem) 0;
- }
+ Image3DD3D11* pImage3DD3D11 = new (amdContext) Image3DD3D11(amdContext, flags, obj);
+ if (!pImage3DD3D11) {
+ *not_null(errcode_ret) = CL_OUT_OF_HOST_MEMORY;
+ return (cl_mem)0;
+ }
+ if (!pImage3DD3D11->create()) {
+ *not_null(errcode_ret) = CL_MEM_OBJECT_ALLOCATION_FAILURE;
+ pImage3DD3D11->release();
+ return (cl_mem)0;
+ }
- *not_null(errcode_ret) = CL_SUCCESS;
- return as_cl(pImage3DD3D11);
+ *not_null(errcode_ret) = CL_SUCCESS;
+ return as_cl(pImage3DD3D11);
}
-size_t
-D3D11Object::getResourceByteSize()
-{
- size_t bytes = 1;
+size_t D3D11Object::getResourceByteSize() {
+ size_t bytes = 1;
- //! @todo [odintsov]: take into consideration the mip level?!
+ //! @todo [odintsov]: take into consideration the mip level?!
- switch(objDesc_.objDim_)
- {
+ switch (objDesc_.objDim_) {
case D3D11_RESOURCE_DIMENSION_BUFFER:
- bytes = objDesc_.objSize_.ByteWidth;
- break;
+ bytes = objDesc_.objSize_.ByteWidth;
+ break;
case D3D11_RESOURCE_DIMENSION_TEXTURE3D:
- bytes = objDesc_.objSize_.Depth;
+ bytes = objDesc_.objSize_.Depth;
case D3D11_RESOURCE_DIMENSION_TEXTURE2D:
- bytes *= objDesc_.objSize_.Height;
+ bytes *= objDesc_.objSize_.Height;
case D3D11_RESOURCE_DIMENSION_TEXTURE1D:
- bytes *= objDesc_.objSize_.Width * getElementBytes();
- break;
+ bytes *= objDesc_.objSize_.Width * getElementBytes();
+ break;
default:
- LogError("getResourceByteSize: unknown type of D3D11 resource");
- bytes = 0;
- break;
- }
- return bytes;
+ LogError("getResourceByteSize: unknown type of D3D11 resource");
+ bytes = 0;
+ break;
+ }
+ return bytes;
}
-cl_uint
-D3D11Object::getMiscFlag()
-{
- if (objDesc_.dxgiFormat_ == DXGI_FORMAT_NV12)
+cl_uint D3D11Object::getMiscFlag() {
+ if (objDesc_.dxgiFormat_ == DXGI_FORMAT_NV12) {
+ return 1;
+ }
+ return 0;
+}
+
+int D3D11Object::initD3D11Object(const Context& amdContext, ID3D11Resource* pRes, UINT subres,
+ D3D11Object& obj, INT plane) {
+ ID3D11Device* pDev;
+ HRESULT hr;
+ ScopedLock sl(resLock_);
+
+ // Check if this ressource has already been used for interop
+ std::vector>>::iterator it;
+ for (it = resources_.begin(); it != resources_.end(); ++it) {
+ if ((*it).first == (void*)pRes && (*it).second.first == subres &&
+ (*it).second.second == plane) {
+ return CL_INVALID_D3D11_RESOURCE_KHR;
+ }
+ }
+
+ (obj.pD3D11Res_ = pRes)->GetDevice(&pDev);
+
+ if (!pDev) {
+ return CL_INVALID_D3D11_DEVICE_KHR;
+ }
+
+ D3D11_QUERY_DESC desc = {D3D11_QUERY_EVENT, 0};
+ pDev->CreateQuery(&desc, &obj.pQuery_);
+
+#define SET_SHARED_FLAGS() \
+ { \
+ obj.pD3D11ResOrig_ = obj.pD3D11Res_; \
+ /* @todo - Check device type and select right usage for resource */ \
+ /* For now get only DPU path, CPU path for buffers */ \
+ /* will not worl on DEFAUL resources */ \
+ /*desc.Usage = D3D11_USAGE_STAGING;*/ \
+ desc.Usage = D3D11_USAGE_DEFAULT; \
+ desc.MiscFlags = D3D11_RESOURCE_MISC_SHARED; \
+ desc.CPUAccessFlags = 0; \
+ }
+
+#define STORE_SHARED_FLAGS_BUFFER(restype) \
+ { \
+ if (S_OK == hr && obj.pD3D11Res_) { \
+ obj.objDesc_.objFlags_.d3d11Usage_ = desc.Usage; \
+ obj.objDesc_.objFlags_.bindFlags_ = desc.BindFlags; \
+ obj.objDesc_.objFlags_.miscFlags_ = desc.MiscFlags; \
+ obj.objDesc_.objFlags_.cpuAccessFlags_ = desc.CPUAccessFlags; \
+ obj.objDesc_.objFlags_.structureByteStride_ = desc.StructureByteStride; \
+ } else { \
+ LogError("\nCannot create shared " #restype "\n"); \
+ return CL_INVALID_D3D11_RESOURCE_KHR; \
+ } \
+ }
+
+#define STORE_SHARED_FLAGS(restype) \
+ { \
+ if (S_OK == hr && obj.pD3D11Res_) { \
+ obj.objDesc_.objFlags_.d3d11Usage_ = desc.Usage; \
+ obj.objDesc_.objFlags_.bindFlags_ = desc.BindFlags; \
+ obj.objDesc_.objFlags_.miscFlags_ = desc.MiscFlags; \
+ obj.objDesc_.objFlags_.cpuAccessFlags_ = desc.CPUAccessFlags; \
+ } else { \
+ LogError("\nCannot create shared " #restype "\n"); \
+ return CL_INVALID_D3D11_RESOURCE_KHR; \
+ } \
+ }
+
+#define SET_BINDING() \
+ { \
+ switch (desc.Format) { \
+ case DXGI_FORMAT_D32_FLOAT_S8X24_UINT: \
+ case DXGI_FORMAT_D32_FLOAT: \
+ case DXGI_FORMAT_D24_UNORM_S8_UINT: \
+ case DXGI_FORMAT_D16_UNORM: \
+ desc.BindFlags = D3D11_BIND_DEPTH_STENCIL; \
+ break; \
+ default: \
+ desc.BindFlags = D3D11_BIND_SHADER_RESOURCE | D3D11_BIND_RENDER_TARGET; \
+ break; \
+ } \
+ }
+
+ pRes->GetType(&obj.objDesc_.objDim_);
+
+ // Init defaults
+ obj.objDesc_.objSize_.Height = 1;
+ obj.objDesc_.objSize_.Depth = 1;
+ obj.objDesc_.mipLevels_ = 1;
+ obj.objDesc_.arraySize_ = 1;
+ obj.objDesc_.dxgiFormat_ = DXGI_FORMAT_UNKNOWN;
+ obj.objDesc_.dxgiSampleDesc_ = dxgiSampleDescDefault;
+
+ switch (obj.objDesc_.objDim_) {
+ case D3D11_RESOURCE_DIMENSION_BUFFER: // = 1,
{
- return 1;
- }
- return 0;
-}
+ D3D11_BUFFER_DESC desc;
+ (reinterpret_cast(pRes))->GetDesc(&desc);
+ obj.objDesc_.objSize_.ByteWidth = desc.ByteWidth;
+ obj.objDesc_.objFlags_.d3d11Usage_ = desc.Usage;
+ obj.objDesc_.objFlags_.bindFlags_ = desc.BindFlags;
+ obj.objDesc_.objFlags_.cpuAccessFlags_ = desc.CPUAccessFlags;
+ obj.objDesc_.objFlags_.miscFlags_ = desc.MiscFlags;
+ obj.objDesc_.objFlags_.structureByteStride_ = desc.StructureByteStride;
+ // Handle D3D11Buffer without shared handle - create
+ // a duplicate with shared handle to provide for CAL
+ if (!(obj.objDesc_.objFlags_.miscFlags_ & D3D11_RESOURCE_MISC_SHARED)) {
+ SET_SHARED_FLAGS();
+ desc.BindFlags = D3D11_BIND_SHADER_RESOURCE | D3D11_BIND_RENDER_TARGET;
+ hr = pDev->CreateBuffer(&desc, NULL, (ID3D11Buffer**)&obj.pD3D11Res_);
+ STORE_SHARED_FLAGS_BUFFER(ID3D11Buffer);
+ }
+ } break;
-int
-D3D11Object::initD3D11Object(const Context& amdContext, ID3D11Resource* pRes, UINT subres, D3D11Object& obj, INT plane)
-{
- ID3D11Device *pDev;
- HRESULT hr;
- ScopedLock sl(resLock_);
+ case D3D11_RESOURCE_DIMENSION_TEXTURE1D: // = 2,
+ {
+ D3D11_TEXTURE1D_DESC desc;
+ (reinterpret_cast(pRes))->GetDesc(&desc);
- // Check if this ressource has already been used for interop
- std::vector >>::iterator it;
- for(it = resources_.begin(); it != resources_.end(); ++it) {
- if((*it).first == (void*) pRes && (*it).second.first == subres && (*it).second.second == plane) {
- return CL_INVALID_D3D11_RESOURCE_KHR;
+ if (subres) {
+ // Calculate correct size of the subresource
+ UINT miplevel = subres;
+ if (desc.ArraySize > 1) {
+ miplevel = subres % desc.ArraySize;
}
- }
-
- (obj.pD3D11Res_ = pRes)->GetDevice(&pDev);
-
- if(!pDev) {
- return CL_INVALID_D3D11_DEVICE_KHR;
- }
-
- D3D11_QUERY_DESC desc = {D3D11_QUERY_EVENT, 0}; \
- pDev->CreateQuery(&desc, &obj.pQuery_); \
-
-#define SET_SHARED_FLAGS() \
- { \
- obj.pD3D11ResOrig_ = obj.pD3D11Res_; \
- /* @todo - Check device type and select right usage for resource */ \
- /* For now get only DPU path, CPU path for buffers */ \
- /* will not worl on DEFAUL resources */ \
- /*desc.Usage = D3D11_USAGE_STAGING;*/ \
- desc.Usage = D3D11_USAGE_DEFAULT; \
- desc.MiscFlags = D3D11_RESOURCE_MISC_SHARED; \
- desc.CPUAccessFlags = 0; \
- }
-
-#define STORE_SHARED_FLAGS_BUFFER(restype) \
- { \
- if(S_OK == hr && obj.pD3D11Res_) { \
- obj.objDesc_.objFlags_.d3d11Usage_ = desc.Usage; \
- obj.objDesc_.objFlags_.bindFlags_ = desc.BindFlags; \
- obj.objDesc_.objFlags_.miscFlags_ = desc.MiscFlags; \
- obj.objDesc_.objFlags_.cpuAccessFlags_ = desc.CPUAccessFlags; \
- obj.objDesc_.objFlags_.structureByteStride_ = desc.StructureByteStride; \
- } \
- else { \
- LogError("\nCannot create shared " #restype "\n"); \
- return CL_INVALID_D3D11_RESOURCE_KHR; \
- } \
- }
-
-#define STORE_SHARED_FLAGS(restype) \
- { \
- if(S_OK == hr && obj.pD3D11Res_) { \
- obj.objDesc_.objFlags_.d3d11Usage_ = desc.Usage; \
- obj.objDesc_.objFlags_.bindFlags_ = desc.BindFlags; \
- obj.objDesc_.objFlags_.miscFlags_ = desc.MiscFlags; \
- obj.objDesc_.objFlags_.cpuAccessFlags_ = desc.CPUAccessFlags; \
- } \
- else { \
- LogError("\nCannot create shared " #restype "\n"); \
- return CL_INVALID_D3D11_RESOURCE_KHR; \
- } \
- }
-
-#define SET_BINDING() \
- { \
- switch(desc.Format) { \
- case DXGI_FORMAT_D32_FLOAT_S8X24_UINT: \
- case DXGI_FORMAT_D32_FLOAT: \
- case DXGI_FORMAT_D24_UNORM_S8_UINT: \
- case DXGI_FORMAT_D16_UNORM: \
- desc.BindFlags = D3D11_BIND_DEPTH_STENCIL; \
- break; \
- default: \
- desc.BindFlags = D3D11_BIND_SHADER_RESOURCE | D3D11_BIND_RENDER_TARGET; \
- break; \
- } \
- }
-
- pRes->GetType(&obj.objDesc_.objDim_);
-
- // Init defaults
- obj.objDesc_.objSize_.Height = 1;
- obj.objDesc_.objSize_.Depth = 1;
- obj.objDesc_.mipLevels_ = 1;
- obj.objDesc_.arraySize_ = 1;
- obj.objDesc_.dxgiFormat_ = DXGI_FORMAT_UNKNOWN;
- obj.objDesc_.dxgiSampleDesc_ = dxgiSampleDescDefault;
-
- switch(obj.objDesc_.objDim_) {
- case D3D11_RESOURCE_DIMENSION_BUFFER: // = 1,
- {
- D3D11_BUFFER_DESC desc;
- (reinterpret_cast(pRes))->GetDesc(&desc);
- obj.objDesc_.objSize_.ByteWidth = desc.ByteWidth;
- obj.objDesc_.objFlags_.d3d11Usage_ = desc.Usage;
- obj.objDesc_.objFlags_.bindFlags_ = desc.BindFlags;
- obj.objDesc_.objFlags_.cpuAccessFlags_ = desc.CPUAccessFlags;
- obj.objDesc_.objFlags_.miscFlags_ = desc.MiscFlags;
- obj.objDesc_.objFlags_.structureByteStride_ = desc.StructureByteStride;
- // Handle D3D11Buffer without shared handle - create
- // a duplicate with shared handle to provide for CAL
- if(!(obj.objDesc_.objFlags_.miscFlags_ & D3D11_RESOURCE_MISC_SHARED)) {
- SET_SHARED_FLAGS();
- desc.BindFlags = D3D11_BIND_SHADER_RESOURCE | D3D11_BIND_RENDER_TARGET;
- hr = pDev->CreateBuffer(&desc, NULL,
- (ID3D11Buffer**) &obj.pD3D11Res_);
- STORE_SHARED_FLAGS_BUFFER(ID3D11Buffer);
- }
+ if (miplevel >= desc.MipLevels) {
+ LogWarning("\nMiplevel >= number of miplevels\n");
}
- break;
-
- case D3D11_RESOURCE_DIMENSION_TEXTURE1D: // = 2,
- {
- D3D11_TEXTURE1D_DESC desc;
- (reinterpret_cast(pRes))->GetDesc(&desc);
-
- if(subres) {
- // Calculate correct size of the subresource
- UINT miplevel = subres;
- if(desc.ArraySize > 1) {
- miplevel = subres % desc.ArraySize;
- }
- if(miplevel >= desc.MipLevels) {
- LogWarning("\nMiplevel >= number of miplevels\n");
- }
- if(subres >= desc.MipLevels*desc.ArraySize) {
- return CL_INVALID_VALUE;
- }
- desc.Width >>= miplevel;
- if(!desc.Width) {
- desc.Width = 1;
- }
- }
- obj.objDesc_.objSize_.Width = desc.Width;
- obj.objDesc_.mipLevels_ = desc.MipLevels;
- obj.objDesc_.arraySize_ = desc.ArraySize;
- obj.objDesc_.dxgiFormat_ = desc.Format;
- obj.objDesc_.objFlags_.d3d11Usage_ = desc.Usage;
- obj.objDesc_.objFlags_.bindFlags_ = desc.BindFlags;
- obj.objDesc_.objFlags_.cpuAccessFlags_ = desc.CPUAccessFlags;
- obj.objDesc_.objFlags_.miscFlags_ = desc.MiscFlags;
- // Handle D3D11Texture1D without shared handle - create
- // a duplicate with shared handle and provide it for CAL
- // Workaround for subresource > 0 in shared resource
- if(subres)
- obj.objDesc_.objFlags_.miscFlags_ &=
- ~(D3D11_RESOURCE_MISC_SHARED);
- if(!(obj.objDesc_.objFlags_.miscFlags_ & D3D11_RESOURCE_MISC_SHARED)) {
- SET_SHARED_FLAGS();
- SET_BINDING();
- obj.objDesc_.mipLevels_ = desc.MipLevels = 1;
- obj.objDesc_.arraySize_ = desc.ArraySize = 1;
- hr = pDev->CreateTexture1D(&desc, NULL,
- (ID3D11Texture1D**) &obj.pD3D11Res_);
- STORE_SHARED_FLAGS(ID3D11Texture1D);
- }
+ if (subres >= desc.MipLevels * desc.ArraySize) {
+ return CL_INVALID_VALUE;
}
- break;
-
- case D3D11_RESOURCE_DIMENSION_TEXTURE2D: // = 3,
- {
- D3D11_TEXTURE2D_DESC desc;
- (reinterpret_cast(pRes))->GetDesc(&desc);
-
- if(subres) {
- // Calculate correct size of the subresource
- UINT miplevel = subres;
- if(desc.ArraySize > 1) {
- miplevel = subres % desc.MipLevels;
- }
- if(miplevel >= desc.MipLevels) {
- LogWarning("\nMiplevel >= number of miplevels\n");
- }
- if(subres >= desc.MipLevels*desc.ArraySize) {
- return CL_INVALID_VALUE;
- }
- desc.Width >>= miplevel;
- if(!desc.Width) {
- desc.Width = 1;
- }
- desc.Height >>= miplevel;
- if(!desc.Height) {
- desc.Height = 1;
- }
- }
- obj.objDesc_.objSize_.Width = desc.Width;
- obj.objDesc_.objSize_.Height = desc.Height;
- obj.objDesc_.mipLevels_ = desc.MipLevels;
- obj.objDesc_.arraySize_ = desc.ArraySize;
- obj.objDesc_.dxgiFormat_ = desc.Format;
- obj.objDesc_.dxgiSampleDesc_ = desc.SampleDesc;
- obj.objDesc_.objFlags_.d3d11Usage_ = desc.Usage;
- obj.objDesc_.objFlags_.bindFlags_ = desc.BindFlags;
- obj.objDesc_.objFlags_.cpuAccessFlags_ = desc.CPUAccessFlags;
- obj.objDesc_.objFlags_.miscFlags_ = desc.MiscFlags;
-
- // Handle D3D11Texture2D without shared handle - create
- // a duplicate with shared handle and provide it for CAL
- // Workaround for subresource > 0 in shared resource
- if(subres)
- obj.objDesc_.objFlags_.miscFlags_ &=
- ~(D3D11_RESOURCE_MISC_SHARED);
- if(!(obj.objDesc_.objFlags_.miscFlags_ & D3D11_RESOURCE_MISC_SHARED)) {
- SET_SHARED_FLAGS();
- SET_BINDING();
- obj.objDesc_.mipLevels_ = desc.MipLevels = 1;
- obj.objDesc_.arraySize_ = desc.ArraySize = 1;
- hr = pDev->CreateTexture2D(&desc, NULL,
- (ID3D11Texture2D**) &obj.pD3D11Res_);
- STORE_SHARED_FLAGS(ID3D11Texture2D);
- }
-
- if (desc.Format == DXGI_FORMAT_NV12)
- {
- if (plane == -1) {
- obj.objDesc_.objSize_.Height += obj.objDesc_.objSize_.Height/2;
- }
- if (plane == 1) {
- obj.objDesc_.objSize_.Width /= 2;
- obj.objDesc_.objSize_.Height /= 2;
- }
- }
+ desc.Width >>= miplevel;
+ if (!desc.Width) {
+ desc.Width = 1;
}
- break;
+ }
+ obj.objDesc_.objSize_.Width = desc.Width;
+ obj.objDesc_.mipLevels_ = desc.MipLevels;
+ obj.objDesc_.arraySize_ = desc.ArraySize;
+ obj.objDesc_.dxgiFormat_ = desc.Format;
+ obj.objDesc_.objFlags_.d3d11Usage_ = desc.Usage;
+ obj.objDesc_.objFlags_.bindFlags_ = desc.BindFlags;
+ obj.objDesc_.objFlags_.cpuAccessFlags_ = desc.CPUAccessFlags;
+ obj.objDesc_.objFlags_.miscFlags_ = desc.MiscFlags;
+ // Handle D3D11Texture1D without shared handle - create
+ // a duplicate with shared handle and provide it for CAL
+ // Workaround for subresource > 0 in shared resource
+ if (subres) obj.objDesc_.objFlags_.miscFlags_ &= ~(D3D11_RESOURCE_MISC_SHARED);
+ if (!(obj.objDesc_.objFlags_.miscFlags_ & D3D11_RESOURCE_MISC_SHARED)) {
+ SET_SHARED_FLAGS();
+ SET_BINDING();
+ obj.objDesc_.mipLevels_ = desc.MipLevels = 1;
+ obj.objDesc_.arraySize_ = desc.ArraySize = 1;
+ hr = pDev->CreateTexture1D(&desc, NULL, (ID3D11Texture1D**)&obj.pD3D11Res_);
+ STORE_SHARED_FLAGS(ID3D11Texture1D);
+ }
+ } break;
- case D3D11_RESOURCE_DIMENSION_TEXTURE3D: // = 4
- {
- D3D11_TEXTURE3D_DESC desc;
- (reinterpret_cast(pRes))->GetDesc(&desc);
+ case D3D11_RESOURCE_DIMENSION_TEXTURE2D: // = 3,
+ {
+ D3D11_TEXTURE2D_DESC desc;
+ (reinterpret_cast(pRes))->GetDesc(&desc);
- if(subres) {
- // Calculate correct size of the subresource
- UINT miplevel = subres;
- if(miplevel >= desc.MipLevels) {
- LogWarning("\nMiplevel >= number of miplevels\n");
- }
- if(subres >= desc.MipLevels) {
- return CL_INVALID_VALUE;
- }
- desc.Width >>= miplevel;
- if(!desc.Width) {
- desc.Width = 1;
- }
- desc.Height >>= miplevel;
- if(!desc.Height) {
- desc.Height = 1;
- }
- desc.Depth >>= miplevel;
- if(!desc.Depth) {
- desc.Depth = 1;
- }
- }
- obj.objDesc_.objSize_.Width = desc.Width;
- obj.objDesc_.objSize_.Height = desc.Height;
- obj.objDesc_.objSize_.Depth = desc.Depth;
- obj.objDesc_.mipLevels_ = desc.MipLevels;
- obj.objDesc_.dxgiFormat_ = desc.Format;
- obj.objDesc_.objFlags_.d3d11Usage_ = desc.Usage;
- obj.objDesc_.objFlags_.bindFlags_ = desc.BindFlags;
- obj.objDesc_.objFlags_.cpuAccessFlags_ = desc.CPUAccessFlags;
- obj.objDesc_.objFlags_.miscFlags_ = desc.MiscFlags;
- // Handle D3D11Texture3D without shared handle - create
- // a duplicate with shared handle and provide it for CAL
- // Workaround for subresource > 0 in shared resource
- if(obj.objDesc_.mipLevels_ > 1)
- obj.objDesc_.objFlags_.miscFlags_ &=
- ~(D3D11_RESOURCE_MISC_SHARED);
- if(!(obj.objDesc_.objFlags_.miscFlags_ & D3D11_RESOURCE_MISC_SHARED)) {
- SET_SHARED_FLAGS();
- SET_BINDING();
- obj.objDesc_.mipLevels_ = desc.MipLevels = 1;
- hr = pDev->CreateTexture3D(&desc, NULL,
- (ID3D11Texture3D**) &obj.pD3D11Res_);
- STORE_SHARED_FLAGS(ID3D11Texture3D);
- }
+ if (subres) {
+ // Calculate correct size of the subresource
+ UINT miplevel = subres;
+ if (desc.ArraySize > 1) {
+ miplevel = subres % desc.MipLevels;
}
- break;
+ if (miplevel >= desc.MipLevels) {
+ LogWarning("\nMiplevel >= number of miplevels\n");
+ }
+ if (subres >= desc.MipLevels * desc.ArraySize) {
+ return CL_INVALID_VALUE;
+ }
+ desc.Width >>= miplevel;
+ if (!desc.Width) {
+ desc.Width = 1;
+ }
+ desc.Height >>= miplevel;
+ if (!desc.Height) {
+ desc.Height = 1;
+ }
+ }
+ obj.objDesc_.objSize_.Width = desc.Width;
+ obj.objDesc_.objSize_.Height = desc.Height;
+ obj.objDesc_.mipLevels_ = desc.MipLevels;
+ obj.objDesc_.arraySize_ = desc.ArraySize;
+ obj.objDesc_.dxgiFormat_ = desc.Format;
+ obj.objDesc_.dxgiSampleDesc_ = desc.SampleDesc;
+ obj.objDesc_.objFlags_.d3d11Usage_ = desc.Usage;
+ obj.objDesc_.objFlags_.bindFlags_ = desc.BindFlags;
+ obj.objDesc_.objFlags_.cpuAccessFlags_ = desc.CPUAccessFlags;
+ obj.objDesc_.objFlags_.miscFlags_ = desc.MiscFlags;
+
+ // Handle D3D11Texture2D without shared handle - create
+ // a duplicate with shared handle and provide it for CAL
+ // Workaround for subresource > 0 in shared resource
+ if (subres) obj.objDesc_.objFlags_.miscFlags_ &= ~(D3D11_RESOURCE_MISC_SHARED);
+ if (!(obj.objDesc_.objFlags_.miscFlags_ & D3D11_RESOURCE_MISC_SHARED)) {
+ SET_SHARED_FLAGS();
+ SET_BINDING();
+ obj.objDesc_.mipLevels_ = desc.MipLevels = 1;
+ obj.objDesc_.arraySize_ = desc.ArraySize = 1;
+ hr = pDev->CreateTexture2D(&desc, NULL, (ID3D11Texture2D**)&obj.pD3D11Res_);
+ STORE_SHARED_FLAGS(ID3D11Texture2D);
+ }
+
+ if (desc.Format == DXGI_FORMAT_NV12) {
+ if (plane == -1) {
+ obj.objDesc_.objSize_.Height += obj.objDesc_.objSize_.Height / 2;
+ }
+ if (plane == 1) {
+ obj.objDesc_.objSize_.Width /= 2;
+ obj.objDesc_.objSize_.Height /= 2;
+ }
+ }
+ } break;
+
+ case D3D11_RESOURCE_DIMENSION_TEXTURE3D: // = 4
+ {
+ D3D11_TEXTURE3D_DESC desc;
+ (reinterpret_cast(pRes))->GetDesc(&desc);
+
+ if (subres) {
+ // Calculate correct size of the subresource
+ UINT miplevel = subres;
+ if (miplevel >= desc.MipLevels) {
+ LogWarning("\nMiplevel >= number of miplevels\n");
+ }
+ if (subres >= desc.MipLevels) {
+ return CL_INVALID_VALUE;
+ }
+ desc.Width >>= miplevel;
+ if (!desc.Width) {
+ desc.Width = 1;
+ }
+ desc.Height >>= miplevel;
+ if (!desc.Height) {
+ desc.Height = 1;
+ }
+ desc.Depth >>= miplevel;
+ if (!desc.Depth) {
+ desc.Depth = 1;
+ }
+ }
+ obj.objDesc_.objSize_.Width = desc.Width;
+ obj.objDesc_.objSize_.Height = desc.Height;
+ obj.objDesc_.objSize_.Depth = desc.Depth;
+ obj.objDesc_.mipLevels_ = desc.MipLevels;
+ obj.objDesc_.dxgiFormat_ = desc.Format;
+ obj.objDesc_.objFlags_.d3d11Usage_ = desc.Usage;
+ obj.objDesc_.objFlags_.bindFlags_ = desc.BindFlags;
+ obj.objDesc_.objFlags_.cpuAccessFlags_ = desc.CPUAccessFlags;
+ obj.objDesc_.objFlags_.miscFlags_ = desc.MiscFlags;
+ // Handle D3D11Texture3D without shared handle - create
+ // a duplicate with shared handle and provide it for CAL
+ // Workaround for subresource > 0 in shared resource
+ if (obj.objDesc_.mipLevels_ > 1)
+ obj.objDesc_.objFlags_.miscFlags_ &= ~(D3D11_RESOURCE_MISC_SHARED);
+ if (!(obj.objDesc_.objFlags_.miscFlags_ & D3D11_RESOURCE_MISC_SHARED)) {
+ SET_SHARED_FLAGS();
+ SET_BINDING();
+ obj.objDesc_.mipLevels_ = desc.MipLevels = 1;
+ hr = pDev->CreateTexture3D(&desc, NULL, (ID3D11Texture3D**)&obj.pD3D11Res_);
+ STORE_SHARED_FLAGS(ID3D11Texture3D);
+ }
+ } break;
default:
- LogError("unknown type of D3D11 resource");
- return CL_INVALID_D3D11_RESOURCE_KHR;
+ LogError("unknown type of D3D11 resource");
+ return CL_INVALID_D3D11_RESOURCE_KHR;
+ }
+ obj.subRes_ = subres;
+ obj.plane_ = plane;
+ pDev->Release();
+ // Check for CL format compatibilty
+ if (obj.objDesc_.objDim_ != D3D11_RESOURCE_DIMENSION_BUFFER) {
+ cl_image_format clFmt = obj.getCLFormatFromDXGI(obj.objDesc_.dxgiFormat_, plane);
+ amd::Image::Format imageFormat(clFmt);
+ if (!imageFormat.isSupported(amdContext)) {
+ return CL_INVALID_IMAGE_FORMAT_DESCRIPTOR;
}
- obj.subRes_ = subres;
- obj.plane_ = plane;
- pDev->Release();
- // Check for CL format compatibilty
- if(obj.objDesc_.objDim_ != D3D11_RESOURCE_DIMENSION_BUFFER) {
- cl_image_format clFmt = obj.getCLFormatFromDXGI(obj.objDesc_.dxgiFormat_, plane);
- amd::Image::Format imageFormat(clFmt);
- if(!imageFormat.isSupported(amdContext)) {
- return CL_INVALID_IMAGE_FORMAT_DESCRIPTOR;
- }
- }
- resources_.push_back(std::make_pair(pRes, std::make_pair(subres, plane)));
- return CL_SUCCESS;
+ }
+ resources_.push_back(std::make_pair(pRes, std::make_pair(subres, plane)));
+ return CL_SUCCESS;
}
-bool
-D3D11Object::copyOrigToShared()
-{
- // Don't copy if there is no orig
- if (NULL == getD3D11ResOrig()) return true;
+bool D3D11Object::copyOrigToShared() {
+ // Don't copy if there is no orig
+ if (NULL == getD3D11ResOrig()) return true;
- ID3D11Device *d3dDev;
- pD3D11Res_->GetDevice(&d3dDev);
- if(!d3dDev) {
- LogError("\nCannot get D3D11 device from D3D11 resource\n");
- return false;
- }
- ID3D11DeviceContext *pImmediateContext = NULL;
- d3dDev->GetImmediateContext(&pImmediateContext);
- if(!pImmediateContext) {
- LogError("\nCannot get D3D11 device context");
- return false;
- }
- assert(pD3D11ResOrig_!=NULL);
- // Any usage source can be read by GPU
- pImmediateContext->CopySubresourceRegion(pD3D11Res_, 0, 0, 0, 0,
- pD3D11ResOrig_, subRes_, NULL);
+ ID3D11Device* d3dDev;
+ pD3D11Res_->GetDevice(&d3dDev);
+ if (!d3dDev) {
+ LogError("\nCannot get D3D11 device from D3D11 resource\n");
+ return false;
+ }
+ ID3D11DeviceContext* pImmediateContext = NULL;
+ d3dDev->GetImmediateContext(&pImmediateContext);
+ if (!pImmediateContext) {
+ LogError("\nCannot get D3D11 device context");
+ return false;
+ }
+ assert(pD3D11ResOrig_ != NULL);
+ // Any usage source can be read by GPU
+ pImmediateContext->CopySubresourceRegion(pD3D11Res_, 0, 0, 0, 0, pD3D11ResOrig_, subRes_, NULL);
- // Flush D3D queues and make sure D3D stuff is finished
- {
- ScopedLock sl(resLock_);//protect from multiple
- pImmediateContext->Flush();
- pImmediateContext->End(pQuery_);
- BOOL data = FALSE;
- while(S_OK != pImmediateContext->GetData(pQuery_, &data, sizeof(BOOL), 0));
- {
- }
- }
+ // Flush D3D queues and make sure D3D stuff is finished
+ {
+ ScopedLock sl(resLock_); // protect from multiple
+ pImmediateContext->Flush();
+ pImmediateContext->End(pQuery_);
+ BOOL data = FALSE;
+ while (S_OK != pImmediateContext->GetData(pQuery_, &data, sizeof(BOOL), 0))
+ ;
+ {}
+ }
- pImmediateContext->Release();
- d3dDev->Release();
- return true;
+ pImmediateContext->Release();
+ d3dDev->Release();
+ return true;
}
-bool
-D3D11Object::copySharedToOrig()
-{
- // Don't copy if there is no orig
- if (NULL == getD3D11ResOrig()) return true;
+bool D3D11Object::copySharedToOrig() {
+ // Don't copy if there is no orig
+ if (NULL == getD3D11ResOrig()) return true;
- ID3D11Device *d3dDev;
- pD3D11Res_->GetDevice(&d3dDev);
- if(!d3dDev) {
- LogError("\nCannot get D3D11 device from D3D11 resource\n");
- return false;
- }
- ID3D11DeviceContext *pImmediateContext = NULL;
- d3dDev->GetImmediateContext(&pImmediateContext);
- if(!pImmediateContext) {
- LogError("\nCannot get D3D11 device context");
- return false;
- }
- assert(pD3D11ResOrig_);
- pImmediateContext->CopySubresourceRegion(pD3D11ResOrig_, subRes_, 0, 0, 0,
- pD3D11Res_, 0, NULL);
- pImmediateContext->Release();
+ ID3D11Device* d3dDev;
+ pD3D11Res_->GetDevice(&d3dDev);
+ if (!d3dDev) {
+ LogError("\nCannot get D3D11 device from D3D11 resource\n");
+ return false;
+ }
+ ID3D11DeviceContext* pImmediateContext = NULL;
+ d3dDev->GetImmediateContext(&pImmediateContext);
+ if (!pImmediateContext) {
+ LogError("\nCannot get D3D11 device context");
+ return false;
+ }
+ assert(pD3D11ResOrig_);
+ pImmediateContext->CopySubresourceRegion(pD3D11ResOrig_, subRes_, 0, 0, 0, pD3D11Res_, 0, NULL);
+ pImmediateContext->Release();
- d3dDev->Release();
- return true;
+ d3dDev->Release();
+ return true;
}
-std::vector >> D3D11Object::resources_;
+std::vector>> D3D11Object::resources_;
Monitor D3D11Object::resLock_;
//
// Class BufferD3D11 implementation
//
-void
-BufferD3D11::initDeviceMemory()
-{
- deviceMemories_ = reinterpret_cast(
- reinterpret_cast(this) + sizeof(BufferD3D11));
- memset(deviceMemories_, 0,
- context_().devices().size() * sizeof(DeviceMemory));
+void BufferD3D11::initDeviceMemory() {
+ deviceMemories_ =
+ reinterpret_cast(reinterpret_cast(this) + sizeof(BufferD3D11));
+ memset(deviceMemories_, 0, context_().devices().size() * sizeof(DeviceMemory));
}
-bool
-BufferD3D11::mapExtObjectInCQThread()
-{
- D3D11_MAPPED_SUBRESOURCE mappedResource;
- HRESULT hr;
- D3D11_MAP gpuMap;
- UINT cpuAccess;
+bool BufferD3D11::mapExtObjectInCQThread() {
+ D3D11_MAPPED_SUBRESOURCE mappedResource;
+ HRESULT hr;
+ D3D11_MAP gpuMap;
+ UINT cpuAccess;
- if (getMemFlags() & CL_MEM_READ_WRITE) {
- gpuMap = D3D11_MAP_READ_WRITE;
- cpuAccess = D3D11_CPU_ACCESS_READ | D3D11_CPU_ACCESS_WRITE;
- }
- else if (getMemFlags() & CL_MEM_READ_ONLY) {
- gpuMap = D3D11_MAP_READ;
- cpuAccess = D3D11_CPU_ACCESS_READ | D3D11_CPU_ACCESS_WRITE;
- }
- else if (getMemFlags() & CL_MEM_WRITE_ONLY) {
- gpuMap = D3D11_MAP_WRITE;
- cpuAccess = D3D11_CPU_ACCESS_READ | D3D11_CPU_ACCESS_WRITE;
- }
- else {
- // Should not get here, the flags had been checked before
- LogError("\nInvalid memrory flags");
- return false;
- }
+ if (getMemFlags() & CL_MEM_READ_WRITE) {
+ gpuMap = D3D11_MAP_READ_WRITE;
+ cpuAccess = D3D11_CPU_ACCESS_READ | D3D11_CPU_ACCESS_WRITE;
+ } else if (getMemFlags() & CL_MEM_READ_ONLY) {
+ gpuMap = D3D11_MAP_READ;
+ cpuAccess = D3D11_CPU_ACCESS_READ | D3D11_CPU_ACCESS_WRITE;
+ } else if (getMemFlags() & CL_MEM_WRITE_ONLY) {
+ gpuMap = D3D11_MAP_WRITE;
+ cpuAccess = D3D11_CPU_ACCESS_READ | D3D11_CPU_ACCESS_WRITE;
+ } else {
+ // Should not get here, the flags had been checked before
+ LogError("\nInvalid memrory flags");
+ return false;
+ }
- ID3D11Device* pD3D11Dev;
- getD3D11Resource()->GetDevice(&pD3D11Dev);
- if(!pD3D11Dev) {
- LogError("\nCannot get D3D11 device");
- return false;
+ ID3D11Device* pD3D11Dev;
+ getD3D11Resource()->GetDevice(&pD3D11Dev);
+ if (!pD3D11Dev) {
+ LogError("\nCannot get D3D11 device");
+ return false;
+ }
+ pD3D11Dev->Release();
+ ID3D11DeviceContext* pImmediateContext = NULL;
+ pD3D11Dev->GetImmediateContext(&pImmediateContext);
+ if (!pImmediateContext) {
+ LogError("\nCannot get D3D11 device context");
+ return false;
+ }
+ pImmediateContext->Release();
+ if (getUsage() == D3D11_USAGE_STAGING) {
+ // XXX Christophe: Use DeviceContext to map
+ //// Can map directly
+ hr = pImmediateContext->Map(getD3D11Resource(), 0, gpuMap, 0, &mappedResource);
+ if (hr != S_OK || !mappedResource.pData) {
+ LogError("Cannot map ID3D11Buffer object to CPU memory");
+ return false;
}
- pD3D11Dev->Release();
- ID3D11DeviceContext *pImmediateContext = NULL;
- pD3D11Dev->GetImmediateContext(&pImmediateContext);
- if(!pImmediateContext) {
- LogError("\nCannot get D3D11 device context");
- return false;
+ } else {
+ // The buffer need to be mapped indirectly
+ // Create auxiliary buffer
+ D3D11_BUFFER_DESC bufDesc = {getResourceByteSize(), D3D11_USAGE_STAGING, 0, cpuAccess, 0};
+ ID3D11Buffer* pAuxBuf;
+ hr = pD3D11Dev->CreateBuffer(&bufDesc, NULL, &pAuxBuf);
+ if (hr != S_OK || !pAuxBuf) {
+ LogError("\nCannot create auxiliary buffer");
+ return false;
}
- pImmediateContext->Release();
- if(getUsage() == D3D11_USAGE_STAGING) {
- // XXX Christophe: Use DeviceContext to map
- //// Can map directly
- hr = pImmediateContext->Map(getD3D11Resource(), 0, gpuMap, 0, &mappedResource);
- if(hr != S_OK || !mappedResource.pData) {
- LogError("Cannot map ID3D11Buffer object to CPU memory");
- return false;
- }
- }
- else {
- // The buffer need to be mapped indirectly
- // Create auxiliary buffer
- D3D11_BUFFER_DESC bufDesc = {
- getResourceByteSize(),
- D3D11_USAGE_STAGING,
- 0,
- cpuAccess,
- 0};
- ID3D11Buffer* pAuxBuf;
- hr = pD3D11Dev->CreateBuffer(&bufDesc, NULL, &pAuxBuf);
- if(hr != S_OK || !pAuxBuf) {
- LogError("\nCannot create auxiliary buffer");
- return false;
- }
- setD3D11AuxRes(pAuxBuf);
- // Copy contents of original buffer to auxiliary
- pImmediateContext->CopyResource(pAuxBuf, getD3D11Resource());
- // Now map the aux buffer
- hr = pImmediateContext->Map(pAuxBuf, 0, gpuMap, 0, &mappedResource);
- if(hr != S_OK || !mappedResource.pData) {
- LogError("Cannot map D3D11 auxiliary buffer to CPU memory");
- return false;
- }
+ setD3D11AuxRes(pAuxBuf);
+ // Copy contents of original buffer to auxiliary
+ pImmediateContext->CopyResource(pAuxBuf, getD3D11Resource());
+ // Now map the aux buffer
+ hr = pImmediateContext->Map(pAuxBuf, 0, gpuMap, 0, &mappedResource);
+ if (hr != S_OK || !mappedResource.pData) {
+ LogError("Cannot map D3D11 auxiliary buffer to CPU memory");
+ return false;
}
+ }
- setHostMem(mappedResource.pData);
- return true;
+ setHostMem(mappedResource.pData);
+ return true;
}
-bool
-BufferD3D11::unmapExtObjectInCQThread()
-{
- ID3D11Device* pD3D11Dev;
- getD3D11AuxRes()->GetDevice(&pD3D11Dev);
- if(!pD3D11Dev) {
- LogError("\nCannot get D3D11 device");
- return false;
+bool BufferD3D11::unmapExtObjectInCQThread() {
+ ID3D11Device* pD3D11Dev;
+ getD3D11AuxRes()->GetDevice(&pD3D11Dev);
+ if (!pD3D11Dev) {
+ LogError("\nCannot get D3D11 device");
+ return false;
+ }
+ pD3D11Dev->Release();
+ ID3D11DeviceContext* pImmediateContext = NULL;
+ pD3D11Dev->GetImmediateContext(&pImmediateContext);
+ if (!pImmediateContext) {
+ LogError("\nCannot get D3D11 device context");
+ return false;
+ }
+ pImmediateContext->Release();
+ if (getMemFlags() & (CL_MEM_READ_WRITE | CL_MEM_WRITE_ONLY)) {
+ if (getD3D11AuxRes()) {
+ // Need to copy data from aux to original
+ pImmediateContext->Unmap(getD3D11AuxRes(), 0);
+ pImmediateContext->CopyResource(getD3D11Resource(), getD3D11AuxRes());
+ getD3D11AuxRes()->Release();
+ setD3D11AuxRes(NULL);
+ } else {
+ pImmediateContext->Unmap(getD3D11Resource(), 0);
}
- pD3D11Dev->Release();
- ID3D11DeviceContext *pImmediateContext = NULL;
- pD3D11Dev->GetImmediateContext(&pImmediateContext);
- if(!pImmediateContext) {
- LogError("\nCannot get D3D11 device context");
- return false;
+ } else {
+ // Just unmap everything, no need to copy contents
+ if (getD3D11AuxRes()) {
+ pImmediateContext->Unmap(getD3D11AuxRes(), 0);
+ getD3D11AuxRes()->Release();
+ setD3D11AuxRes(NULL);
+ } else {
+ pImmediateContext->Unmap(getD3D11Resource(), 0);
}
- pImmediateContext->Release();
- if(getMemFlags() & (CL_MEM_READ_WRITE | CL_MEM_WRITE_ONLY)) {
- if(getD3D11AuxRes()) {
- // Need to copy data from aux to original
- pImmediateContext->Unmap(getD3D11AuxRes(), 0);
- pImmediateContext->CopyResource(getD3D11Resource(), getD3D11AuxRes());
- getD3D11AuxRes()->Release();
- setD3D11AuxRes(NULL);
- }
- else {
- pImmediateContext->Unmap(getD3D11Resource(), 0);
- }
- }
- else {
- // Just unmap everything, no need to copy contents
- if(getD3D11AuxRes()) {
- pImmediateContext->Unmap(getD3D11AuxRes(), 0);
- getD3D11AuxRes()->Release();
- setD3D11AuxRes(NULL);
- }
- else {
- pImmediateContext->Unmap(getD3D11Resource(), 0);
- }
- }
- setHostMem(NULL);
- return true;
+ }
+ setHostMem(NULL);
+ return true;
}
//
// Class Image1DD3D11 implementation
//
-void
-Image1DD3D11::initDeviceMemory()
-{
- deviceMemories_ = reinterpret_cast(
- reinterpret_cast(this) + sizeof(Image1DD3D11));
- memset(deviceMemories_, 0,
- context_().devices().size() * sizeof(DeviceMemory));
+void Image1DD3D11::initDeviceMemory() {
+ deviceMemories_ =
+ reinterpret_cast(reinterpret_cast(this) + sizeof(Image1DD3D11));
+ memset(deviceMemories_, 0, context_().devices().size() * sizeof(DeviceMemory));
}
-bool
-Image1DD3D11::mapExtObjectInCQThread()
-{
- LogError("\nImage1DD3D11::mapExtObjectInCQThread() is not implemented yet\n");
- return false;
+bool Image1DD3D11::mapExtObjectInCQThread() {
+ LogError("\nImage1DD3D11::mapExtObjectInCQThread() is not implemented yet\n");
+ return false;
}
-bool
-Image1DD3D11::unmapExtObjectInCQThread()
-{
- LogError("\nImage1DD3D11::unmapExtObjectInCQThread() is not implemented yet\n");
- return false;
+bool Image1DD3D11::unmapExtObjectInCQThread() {
+ LogError("\nImage1DD3D11::unmapExtObjectInCQThread() is not implemented yet\n");
+ return false;
}
//
// Class Image2DD3D11 implementation
//
-void
-Image2DD3D11::initDeviceMemory()
-{
- deviceMemories_ = reinterpret_cast(
- reinterpret_cast(this) + sizeof(Image2DD3D11));
- memset(deviceMemories_, 0,
- context_().devices().size() * sizeof(DeviceMemory));
+void Image2DD3D11::initDeviceMemory() {
+ deviceMemories_ =
+ reinterpret_cast(reinterpret_cast(this) + sizeof(Image2DD3D11));
+ memset(deviceMemories_, 0, context_().devices().size() * sizeof(DeviceMemory));
}
-bool
-Image2DD3D11::mapExtObjectInCQThread()
-{
- D3D11_MAPPED_SUBRESOURCE texture2D;
- HRESULT hr;
- D3D11_MAP gpuMap;
- UINT cpuAccess;
+bool Image2DD3D11::mapExtObjectInCQThread() {
+ D3D11_MAPPED_SUBRESOURCE texture2D;
+ HRESULT hr;
+ D3D11_MAP gpuMap;
+ UINT cpuAccess;
- if (getMemFlags() & CL_MEM_READ_WRITE) {
- gpuMap = D3D11_MAP_READ_WRITE;
- cpuAccess = D3D11_CPU_ACCESS_READ | D3D11_CPU_ACCESS_WRITE;
- }
- else if (getMemFlags() & CL_MEM_READ_ONLY) {
- gpuMap = D3D11_MAP_READ;
- cpuAccess = D3D11_CPU_ACCESS_READ | D3D11_CPU_ACCESS_WRITE;
- }
- else if (getMemFlags() & CL_MEM_WRITE_ONLY) {
- gpuMap = D3D11_MAP_WRITE;
- cpuAccess = D3D11_CPU_ACCESS_READ | D3D11_CPU_ACCESS_WRITE;
- }
- else {
- // Should not get here, the flags had been checked before
- LogError("\nInvalid memrory flags");
- return false;
- }
+ if (getMemFlags() & CL_MEM_READ_WRITE) {
+ gpuMap = D3D11_MAP_READ_WRITE;
+ cpuAccess = D3D11_CPU_ACCESS_READ | D3D11_CPU_ACCESS_WRITE;
+ } else if (getMemFlags() & CL_MEM_READ_ONLY) {
+ gpuMap = D3D11_MAP_READ;
+ cpuAccess = D3D11_CPU_ACCESS_READ | D3D11_CPU_ACCESS_WRITE;
+ } else if (getMemFlags() & CL_MEM_WRITE_ONLY) {
+ gpuMap = D3D11_MAP_WRITE;
+ cpuAccess = D3D11_CPU_ACCESS_READ | D3D11_CPU_ACCESS_WRITE;
+ } else {
+ // Should not get here, the flags had been checked before
+ LogError("\nInvalid memrory flags");
+ return false;
+ }
- ID3D11Device* pD3D11Dev;
- getD3D11Resource()->GetDevice(&pD3D11Dev);
- if(!pD3D11Dev) {
- LogError("\nCannot get D3D11 device");
- return false;
+ ID3D11Device* pD3D11Dev;
+ getD3D11Resource()->GetDevice(&pD3D11Dev);
+ if (!pD3D11Dev) {
+ LogError("\nCannot get D3D11 device");
+ return false;
+ }
+ pD3D11Dev->Release();
+ ID3D11DeviceContext* pImmediateContext = NULL;
+ pD3D11Dev->GetImmediateContext(&pImmediateContext);
+ if (!pImmediateContext) {
+ LogError("\nCannot get D3D11 device context");
+ return false;
+ }
+ pImmediateContext->Release();
+ if (getUsage() == D3D11_USAGE_STAGING) {
+ // Can map directly
+ hr = pImmediateContext->Map(getD3D11Resource(), getSubresource(), gpuMap, 0, &texture2D);
+ if (hr != S_OK || !texture2D.pData) {
+ LogError("Cannot map ID3D11Texture2D object to CPU memory");
+ return false;
}
- pD3D11Dev->Release();
- ID3D11DeviceContext *pImmediateContext = NULL;
- pD3D11Dev->GetImmediateContext(&pImmediateContext);
- if(!pImmediateContext) {
- LogError("\nCannot get D3D11 device context");
- return false;
+ } else {
+ // The texture needs to be mapped indirectly.
+ // Create auxiliary texture.
+ D3D11_TEXTURE2D_DESC texDesc;
+ reinterpret_cast(getD3D11Resource())->GetDesc(&texDesc);
+ texDesc.Usage = D3D11_USAGE_STAGING;
+ texDesc.MipLevels = 1;
+ texDesc.BindFlags = 0;
+ texDesc.CPUAccessFlags = cpuAccess;
+ texDesc.MiscFlags = 0;
+ ID3D11Texture2D* pAuxTex;
+ hr = pD3D11Dev->CreateTexture2D(&texDesc, NULL, &pAuxTex);
+ if (hr != S_OK) {
+ LogError("\nCannot create auxiliary 2D texture");
+ return false;
}
- pImmediateContext->Release();
- if(getUsage() == D3D11_USAGE_STAGING) {
- // Can map directly
- hr = pImmediateContext->Map(getD3D11Resource(), getSubresource(), gpuMap, 0, &texture2D);
- if(hr != S_OK || !texture2D.pData) {
- LogError("Cannot map ID3D11Texture2D object to CPU memory");
- return false;
- }
- }
- else {
- // The texture needs to be mapped indirectly.
- // Create auxiliary texture.
- D3D11_TEXTURE2D_DESC texDesc;
- reinterpret_cast(getD3D11Resource())
- ->GetDesc(&texDesc);
- texDesc.Usage = D3D11_USAGE_STAGING;
- texDesc.MipLevels = 1;
- texDesc.BindFlags = 0;
- texDesc.CPUAccessFlags = cpuAccess;
- texDesc.MiscFlags = 0;
- ID3D11Texture2D* pAuxTex;
- hr = pD3D11Dev->CreateTexture2D(&texDesc, NULL, &pAuxTex);
- if(hr != S_OK) {
- LogError("\nCannot create auxiliary 2D texture");
- return false;
- }
- setD3D11AuxRes(pAuxTex);
- // Copy contents of original texture to auxiliary
- pImmediateContext->CopyResource(pAuxTex, getD3D11Resource());
- // Now map the aux texture
- hr = pImmediateContext->Map(pAuxTex, 0, gpuMap, 0, &texture2D);
- if(hr != S_OK || !texture2D.pData) {
- LogError("Cannot map D3D11 auxiliary 2D texture to CPU memory");
- return false;
- }
+ setD3D11AuxRes(pAuxTex);
+ // Copy contents of original texture to auxiliary
+ pImmediateContext->CopyResource(pAuxTex, getD3D11Resource());
+ // Now map the aux texture
+ hr = pImmediateContext->Map(pAuxTex, 0, gpuMap, 0, &texture2D);
+ if (hr != S_OK || !texture2D.pData) {
+ LogError("Cannot map D3D11 auxiliary 2D texture to CPU memory");
+ return false;
}
+ }
- setHostMem(texture2D.pData);
- return true;
+ setHostMem(texture2D.pData);
+ return true;
}
-bool
-Image2DD3D11::unmapExtObjectInCQThread()
-{
- ID3D11Device* pD3D11Dev;
- getD3D11AuxRes()->GetDevice(&pD3D11Dev);
- if(!pD3D11Dev) {
- LogError("\nCannot get D3D11 device");
- return false;
+bool Image2DD3D11::unmapExtObjectInCQThread() {
+ ID3D11Device* pD3D11Dev;
+ getD3D11AuxRes()->GetDevice(&pD3D11Dev);
+ if (!pD3D11Dev) {
+ LogError("\nCannot get D3D11 device");
+ return false;
+ }
+ pD3D11Dev->Release();
+ ID3D11DeviceContext* pImmediateContext = NULL;
+ pD3D11Dev->GetImmediateContext(&pImmediateContext);
+ if (!pImmediateContext) {
+ LogError("\nCannot get D3D11 device context");
+ return false;
+ }
+ pImmediateContext->Release();
+ if (getMemFlags() & (CL_MEM_READ_WRITE | CL_MEM_WRITE_ONLY)) {
+ if (getD3D11AuxRes()) {
+ // Need to copy data from aux to original
+ pImmediateContext->Unmap(getD3D11AuxRes(), 0);
+ pImmediateContext->CopyResource(getD3D11Resource(), getD3D11AuxRes());
+ getD3D11AuxRes()->Release();
+ setD3D11AuxRes(NULL);
+ } else {
+ pImmediateContext->Unmap(getD3D11Resource(), getSubresource());
}
- pD3D11Dev->Release();
- ID3D11DeviceContext *pImmediateContext = NULL;
- pD3D11Dev->GetImmediateContext(&pImmediateContext);
- if(!pImmediateContext) {
- LogError("\nCannot get D3D11 device context");
- return false;
+ } else {
+ // Just unmap everything, no need to copy contents
+ if (getD3D11AuxRes()) {
+ pImmediateContext->Unmap(getD3D11AuxRes(), 0);
+ getD3D11AuxRes()->Release();
+ setD3D11AuxRes(NULL);
+ } else {
+ pImmediateContext->Unmap(getD3D11Resource(), getSubresource());
}
- pImmediateContext->Release();
- if(getMemFlags() & (CL_MEM_READ_WRITE | CL_MEM_WRITE_ONLY)) {
- if(getD3D11AuxRes()) {
- // Need to copy data from aux to original
- pImmediateContext->Unmap(getD3D11AuxRes(), 0);
- pImmediateContext->CopyResource(getD3D11Resource(), getD3D11AuxRes());
- getD3D11AuxRes()->Release();
- setD3D11AuxRes(NULL);
- }
- else {
- pImmediateContext->Unmap(getD3D11Resource(), getSubresource());
- }
- }
- else {
- // Just unmap everything, no need to copy contents
- if(getD3D11AuxRes()) {
- pImmediateContext->Unmap(getD3D11AuxRes(), 0);
- getD3D11AuxRes()->Release();
- setD3D11AuxRes(NULL);
- }
- else {
- pImmediateContext->Unmap(getD3D11Resource(), getSubresource());
- }
- }
- setHostMem(NULL);
- return true;
+ }
+ setHostMem(NULL);
+ return true;
}
//
// Class Image3DD3D11 implementation
//
-void
-Image3DD3D11::initDeviceMemory()
-{
- deviceMemories_ = reinterpret_cast(
- reinterpret_cast(this) + sizeof(Image3DD3D11));
- memset(deviceMemories_, 0,
- context_().devices().size() * sizeof(DeviceMemory));
+void Image3DD3D11::initDeviceMemory() {
+ deviceMemories_ =
+ reinterpret_cast(reinterpret_cast(this) + sizeof(Image3DD3D11));
+ memset(deviceMemories_, 0, context_().devices().size() * sizeof(DeviceMemory));
}
-bool
-Image3DD3D11::mapExtObjectInCQThread()
-{
- D3D11_MAPPED_SUBRESOURCE texture3D;
- HRESULT hr;
- D3D11_MAP gpuMap;
- UINT cpuAccess;
+bool Image3DD3D11::mapExtObjectInCQThread() {
+ D3D11_MAPPED_SUBRESOURCE texture3D;
+ HRESULT hr;
+ D3D11_MAP gpuMap;
+ UINT cpuAccess;
- if (getMemFlags() & CL_MEM_READ_WRITE) {
- gpuMap = D3D11_MAP_READ_WRITE;
- cpuAccess = D3D11_CPU_ACCESS_READ | D3D11_CPU_ACCESS_WRITE;
- }
- else if (getMemFlags() & CL_MEM_READ_ONLY) {
- gpuMap = D3D11_MAP_READ;
- cpuAccess = D3D11_CPU_ACCESS_READ | D3D11_CPU_ACCESS_WRITE;
- }
- else if (getMemFlags() & CL_MEM_WRITE_ONLY) {
- gpuMap = D3D11_MAP_WRITE;
- cpuAccess = D3D11_CPU_ACCESS_READ | D3D11_CPU_ACCESS_WRITE;
- }
- else {
- // Should not get here, the flags had been checked before
- LogError("\nInvalid memrory flags");
- return false;
- }
+ if (getMemFlags() & CL_MEM_READ_WRITE) {
+ gpuMap = D3D11_MAP_READ_WRITE;
+ cpuAccess = D3D11_CPU_ACCESS_READ | D3D11_CPU_ACCESS_WRITE;
+ } else if (getMemFlags() & CL_MEM_READ_ONLY) {
+ gpuMap = D3D11_MAP_READ;
+ cpuAccess = D3D11_CPU_ACCESS_READ | D3D11_CPU_ACCESS_WRITE;
+ } else if (getMemFlags() & CL_MEM_WRITE_ONLY) {
+ gpuMap = D3D11_MAP_WRITE;
+ cpuAccess = D3D11_CPU_ACCESS_READ | D3D11_CPU_ACCESS_WRITE;
+ } else {
+ // Should not get here, the flags had been checked before
+ LogError("\nInvalid memrory flags");
+ return false;
+ }
- ID3D11Device* pD3D11Dev;
- getD3D11AuxRes()->GetDevice(&pD3D11Dev);
- if(!pD3D11Dev) {
- LogError("\nCannot get D3D11 device");
- return false;
+ ID3D11Device* pD3D11Dev;
+ getD3D11AuxRes()->GetDevice(&pD3D11Dev);
+ if (!pD3D11Dev) {
+ LogError("\nCannot get D3D11 device");
+ return false;
+ }
+ pD3D11Dev->Release();
+ ID3D11DeviceContext* pImmediateContext = NULL;
+ pD3D11Dev->GetImmediateContext(&pImmediateContext);
+ if (!pImmediateContext) {
+ LogError("\nCannot get D3D11 device context");
+ return false;
+ }
+ pImmediateContext->Release();
+ if (getUsage() == D3D11_USAGE_STAGING) {
+ // Can map directly
+ hr = pImmediateContext->Map(getD3D11Resource(), getSubresource(), gpuMap, 0, &texture3D);
+ if (hr != S_OK || !texture3D.pData) {
+ LogError("Cannot map ID3D11Texture3D object to CPU memory");
+ return false;
}
- pD3D11Dev->Release();
- ID3D11DeviceContext *pImmediateContext = NULL;
- pD3D11Dev->GetImmediateContext(&pImmediateContext);
- if(!pImmediateContext) {
- LogError("\nCannot get D3D11 device context");
- return false;
+ } else {
+ // The texture needs to be mapped indirectly.
+ // Create auxiliary texture.
+ D3D11_TEXTURE3D_DESC texDesc;
+ reinterpret_cast(getD3D11Resource())->GetDesc(&texDesc);
+ texDesc.Usage = D3D11_USAGE_STAGING;
+ texDesc.MipLevels = 1;
+ texDesc.BindFlags = 0;
+ texDesc.CPUAccessFlags = cpuAccess;
+ texDesc.MiscFlags = 0;
+ ID3D11Texture3D* pAuxTex;
+ hr = pD3D11Dev->CreateTexture3D(&texDesc, NULL, &pAuxTex);
+ if (hr != S_OK) {
+ LogError("\nCannot create auxiliary 3D texture");
+ return false;
}
- pImmediateContext->Release();
- if(getUsage() == D3D11_USAGE_STAGING) {
- // Can map directly
- hr = pImmediateContext->Map(getD3D11Resource(), getSubresource(), gpuMap, 0, &texture3D);
- if(hr != S_OK || !texture3D.pData) {
- LogError("Cannot map ID3D11Texture3D object to CPU memory");
- return false;
- }
- }
- else {
- // The texture needs to be mapped indirectly.
- // Create auxiliary texture.
- D3D11_TEXTURE3D_DESC texDesc;
- reinterpret_cast(getD3D11Resource())
- ->GetDesc(&texDesc);
- texDesc.Usage = D3D11_USAGE_STAGING;
- texDesc.MipLevels = 1;
- texDesc.BindFlags = 0;
- texDesc.CPUAccessFlags = cpuAccess;
- texDesc.MiscFlags = 0;
- ID3D11Texture3D* pAuxTex;
- hr = pD3D11Dev->CreateTexture3D(&texDesc, NULL, &pAuxTex);
- if(hr != S_OK) {
- LogError("\nCannot create auxiliary 3D texture");
- return false;
- }
- setD3D11AuxRes(pAuxTex);
- // Copy contents of original texture to auxiliary
- pImmediateContext->CopyResource(pAuxTex, getD3D11Resource());
- // Now map the aux texture
- hr = pImmediateContext->Map(pAuxTex, 0, gpuMap, 0, &texture3D);
- if(hr != S_OK || !texture3D.pData) {
- LogError("Cannot map D3D11 auxiliary 3D texture to CPU memory");
- return false;
- }
+ setD3D11AuxRes(pAuxTex);
+ // Copy contents of original texture to auxiliary
+ pImmediateContext->CopyResource(pAuxTex, getD3D11Resource());
+ // Now map the aux texture
+ hr = pImmediateContext->Map(pAuxTex, 0, gpuMap, 0, &texture3D);
+ if (hr != S_OK || !texture3D.pData) {
+ LogError("Cannot map D3D11 auxiliary 3D texture to CPU memory");
+ return false;
}
+ }
- setHostMem(texture3D.pData);
- return true;
+ setHostMem(texture3D.pData);
+ return true;
}
-bool
-Image3DD3D11::unmapExtObjectInCQThread()
-{
- ID3D11Device* pD3D11Dev;
- getD3D11AuxRes()->GetDevice(&pD3D11Dev);
- if(!pD3D11Dev) {
- LogError("\nCannot get D3D11 device");
- return false;
+bool Image3DD3D11::unmapExtObjectInCQThread() {
+ ID3D11Device* pD3D11Dev;
+ getD3D11AuxRes()->GetDevice(&pD3D11Dev);
+ if (!pD3D11Dev) {
+ LogError("\nCannot get D3D11 device");
+ return false;
+ }
+ pD3D11Dev->Release();
+ ID3D11DeviceContext* pImmediateContext = NULL;
+ pD3D11Dev->GetImmediateContext(&pImmediateContext);
+ if (!pImmediateContext) {
+ LogError("\nCannot get D3D11 device context");
+ return false;
+ }
+ pImmediateContext->Release();
+ if (getMemFlags() & (CL_MEM_READ_WRITE | CL_MEM_WRITE_ONLY)) {
+ if (getD3D11AuxRes()) {
+ // Need to copy data from aux to original
+ pImmediateContext->Unmap(getD3D11AuxRes(), 0);
+ pImmediateContext->CopyResource(getD3D11Resource(), getD3D11AuxRes());
+ getD3D11AuxRes()->Release();
+ setD3D11AuxRes(NULL);
+ } else {
+ pImmediateContext->Unmap(getD3D11Resource(), getSubresource());
}
- pD3D11Dev->Release();
- ID3D11DeviceContext *pImmediateContext = NULL;
- pD3D11Dev->GetImmediateContext(&pImmediateContext);
- if(!pImmediateContext) {
- LogError("\nCannot get D3D11 device context");
- return false;
+ } else {
+ // Just unmap everything, no need to copy contents
+ if (getD3D11AuxRes()) {
+ pImmediateContext->Unmap(getD3D11AuxRes(), 0);
+ getD3D11AuxRes()->Release();
+ setD3D11AuxRes(NULL);
+ } else {
+ pImmediateContext->Unmap(getD3D11Resource(), getSubresource());
}
- pImmediateContext->Release();
- if(getMemFlags() & (CL_MEM_READ_WRITE | CL_MEM_WRITE_ONLY)) {
- if(getD3D11AuxRes()) {
- // Need to copy data from aux to original
- pImmediateContext->Unmap(getD3D11AuxRes(), 0);
- pImmediateContext->CopyResource(getD3D11Resource(), getD3D11AuxRes());
- getD3D11AuxRes()->Release();
- setD3D11AuxRes(NULL);
- }
- else {
- pImmediateContext->Unmap(getD3D11Resource(), getSubresource());
- }
- }
- else {
- // Just unmap everything, no need to copy contents
- if(getD3D11AuxRes()) {
- pImmediateContext->Unmap(getD3D11AuxRes(), 0);
- getD3D11AuxRes()->Release();
- setD3D11AuxRes(NULL);
- }
- else {
- pImmediateContext->Unmap(getD3D11Resource(), getSubresource());
- }
- }
- setHostMem(NULL);
- return true;
+ }
+ setHostMem(NULL);
+ return true;
}
//
// Helper function SyncD3D11Objects
//
-void SyncD3D11Objects(std::vector& memObjects)
-{
- Memory*& mem = memObjects.front();
- if(!mem) {
- LogWarning("\nNULL memory object\n");
- return;
- }
- InteropObject* interop = mem->getInteropObj();
- if(!interop) {
- LogWarning("\nNULL interop object\n");
- return;
- }
- D3D11Object* d3dObj = interop->asD3D11Object();
- if(!d3dObj) {
- LogWarning("\nNULL D3D11 object\n");
- return;
- }
- ID3D11Query* query = d3dObj->getQuery();
- if(!query) {
- LogWarning("\nNULL ID3D11Query\n");
- return;
- }
- ID3D11Device *d3dDev;
- query->GetDevice(&d3dDev);
- if(!d3dDev) {
- LogError("\nCannot get D3D11 device from D3D11 resource\n");
- return;
- }
- ID3D11DeviceContext *pImmediateContext = NULL;
- d3dDev->GetImmediateContext(&pImmediateContext);
- if(!pImmediateContext) {
- LogError("\nCannot get D3D11 device context");
- return;
- }
- pImmediateContext->Release();
+void SyncD3D11Objects(std::vector& memObjects) {
+ Memory*& mem = memObjects.front();
+ if (!mem) {
+ LogWarning("\nNULL memory object\n");
+ return;
+ }
+ InteropObject* interop = mem->getInteropObj();
+ if (!interop) {
+ LogWarning("\nNULL interop object\n");
+ return;
+ }
+ D3D11Object* d3dObj = interop->asD3D11Object();
+ if (!d3dObj) {
+ LogWarning("\nNULL D3D11 object\n");
+ return;
+ }
+ ID3D11Query* query = d3dObj->getQuery();
+ if (!query) {
+ LogWarning("\nNULL ID3D11Query\n");
+ return;
+ }
+ ID3D11Device* d3dDev;
+ query->GetDevice(&d3dDev);
+ if (!d3dDev) {
+ LogError("\nCannot get D3D11 device from D3D11 resource\n");
+ return;
+ }
+ ID3D11DeviceContext* pImmediateContext = NULL;
+ d3dDev->GetImmediateContext(&pImmediateContext);
+ if (!pImmediateContext) {
+ LogError("\nCannot get D3D11 device context");
+ return;
+ }
+ pImmediateContext->Release();
- // Flush D3D queues and make sure D3D stuff is finished
- {
- ScopedLock sl(d3dObj->getResLock());
- pImmediateContext->End(query);
- BOOL data;
- while(S_OK != pImmediateContext->GetData(query, &data, sizeof(BOOL), 0) && data != TRUE)
- {
- }
+ // Flush D3D queues and make sure D3D stuff is finished
+ {
+ ScopedLock sl(d3dObj->getResLock());
+ pImmediateContext->End(query);
+ BOOL data;
+ while (S_OK != pImmediateContext->GetData(query, &data, sizeof(BOOL), 0) && data != TRUE) {
}
+ }
- d3dDev->Release();
+ d3dDev->Release();
}
//
// Class D3D11Object implementation
//
-size_t
-D3D11Object::getElementBytes(DXGI_FORMAT dxgiFmt, cl_uint plane)
-{
- size_t bytesPerPixel;
+size_t D3D11Object::getElementBytes(DXGI_FORMAT dxgiFmt, cl_uint plane) {
+ size_t bytesPerPixel;
- switch(dxgiFmt)
- {
+ switch (dxgiFmt) {
case DXGI_FORMAT_R32G32B32A32_TYPELESS:
case DXGI_FORMAT_R32G32B32A32_FLOAT:
case DXGI_FORMAT_R32G32B32A32_UINT:
case DXGI_FORMAT_R32G32B32A32_SINT:
- bytesPerPixel = 16;
- break;
+ bytesPerPixel = 16;
+ break;
case DXGI_FORMAT_R32G32B32_TYPELESS:
case DXGI_FORMAT_R32G32B32_FLOAT:
case DXGI_FORMAT_R32G32B32_UINT:
case DXGI_FORMAT_R32G32B32_SINT:
- bytesPerPixel = 12;
- break;
+ bytesPerPixel = 12;
+ break;
case DXGI_FORMAT_R16G16B16A16_TYPELESS:
case DXGI_FORMAT_R16G16B16A16_FLOAT:
@@ -1578,8 +1415,8 @@ D3D11Object::getElementBytes(DXGI_FORMAT dxgiFmt, cl_uint plane)
case DXGI_FORMAT_D32_FLOAT_S8X24_UINT:
case DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS:
case DXGI_FORMAT_X32_TYPELESS_G8X24_UINT:
- bytesPerPixel = 8;
- break;
+ bytesPerPixel = 8;
+ break;
case DXGI_FORMAT_R10G10B10A2_TYPELESS:
case DXGI_FORMAT_R10G10B10A2_UNORM:
@@ -1613,8 +1450,8 @@ D3D11Object::getElementBytes(DXGI_FORMAT dxgiFmt, cl_uint plane)
case DXGI_FORMAT_B8G8R8A8_UNORM:
case DXGI_FORMAT_B8G8R8X8_UNORM:
- bytesPerPixel = 4;
- break;
+ bytesPerPixel = 4;
+ break;
case DXGI_FORMAT_R8G8_TYPELESS:
case DXGI_FORMAT_R8G8_UNORM:
@@ -1631,387 +1468,384 @@ D3D11Object::getElementBytes(DXGI_FORMAT dxgiFmt, cl_uint plane)
case DXGI_FORMAT_B5G6R5_UNORM:
case DXGI_FORMAT_B5G5R5A1_UNORM:
+ bytesPerPixel = 2;
+ break;
+
+ case DXGI_FORMAT_R8_TYPELESS:
+ case DXGI_FORMAT_R8_UNORM:
+ case DXGI_FORMAT_R8_UINT:
+ case DXGI_FORMAT_R8_SNORM:
+ case DXGI_FORMAT_R8_SINT:
+ case DXGI_FORMAT_A8_UNORM:
+ case DXGI_FORMAT_R1_UNORM:
+ bytesPerPixel = 1;
+ break;
+
+
+ case DXGI_FORMAT_BC1_TYPELESS:
+ case DXGI_FORMAT_BC1_UNORM:
+ case DXGI_FORMAT_BC1_UNORM_SRGB:
+ case DXGI_FORMAT_BC2_TYPELESS:
+ case DXGI_FORMAT_BC2_UNORM:
+ case DXGI_FORMAT_BC2_UNORM_SRGB:
+ case DXGI_FORMAT_BC3_TYPELESS:
+ case DXGI_FORMAT_BC3_UNORM:
+ case DXGI_FORMAT_BC3_UNORM_SRGB:
+ case DXGI_FORMAT_BC4_TYPELESS:
+ case DXGI_FORMAT_BC4_UNORM:
+ case DXGI_FORMAT_BC4_SNORM:
+ case DXGI_FORMAT_BC5_TYPELESS:
+ case DXGI_FORMAT_BC5_UNORM:
+ case DXGI_FORMAT_BC5_SNORM:
+ // Less than 1 byte per pixel - needs special consideration
+ bytesPerPixel = 0;
+ break;
+ case DXGI_FORMAT_NV12:
+ bytesPerPixel = 1;
+ if (plane == 1) {
bytesPerPixel = 2;
- break;
-
- case DXGI_FORMAT_R8_TYPELESS:
- case DXGI_FORMAT_R8_UNORM:
- case DXGI_FORMAT_R8_UINT:
- case DXGI_FORMAT_R8_SNORM:
- case DXGI_FORMAT_R8_SINT:
- case DXGI_FORMAT_A8_UNORM:
- case DXGI_FORMAT_R1_UNORM:
- bytesPerPixel = 1;
- break;
-
-
- case DXGI_FORMAT_BC1_TYPELESS:
- case DXGI_FORMAT_BC1_UNORM:
- case DXGI_FORMAT_BC1_UNORM_SRGB:
- case DXGI_FORMAT_BC2_TYPELESS:
- case DXGI_FORMAT_BC2_UNORM:
- case DXGI_FORMAT_BC2_UNORM_SRGB:
- case DXGI_FORMAT_BC3_TYPELESS:
- case DXGI_FORMAT_BC3_UNORM:
- case DXGI_FORMAT_BC3_UNORM_SRGB:
- case DXGI_FORMAT_BC4_TYPELESS:
- case DXGI_FORMAT_BC4_UNORM:
- case DXGI_FORMAT_BC4_SNORM:
- case DXGI_FORMAT_BC5_TYPELESS:
- case DXGI_FORMAT_BC5_UNORM:
- case DXGI_FORMAT_BC5_SNORM:
- // Less than 1 byte per pixel - needs special consideration
- bytesPerPixel = 0;
- break;
- case DXGI_FORMAT_NV12:
- bytesPerPixel = 1;
- if(plane == 1) {
- bytesPerPixel = 2;
- }
- break;
+ }
+ break;
default:
- bytesPerPixel = 0;
- _ASSERT(FALSE);
- break;
- }
- return bytesPerPixel;
+ bytesPerPixel = 0;
+ _ASSERT(FALSE);
+ break;
+ }
+ return bytesPerPixel;
}
-cl_image_format
-D3D11Object::getCLFormatFromDXGI(DXGI_FORMAT dxgiFmt, cl_uint plane)
-{
- cl_image_format fmt;
+cl_image_format D3D11Object::getCLFormatFromDXGI(DXGI_FORMAT dxgiFmt, cl_uint plane) {
+ cl_image_format fmt;
- //! @todo [odintsov]: add real fmt conversion from DXGI to CL
- fmt.image_channel_order = 0;//CL_RGBA;
- fmt.image_channel_data_type = 0;//CL_UNSIGNED_INT8;
+ //! @todo [odintsov]: add real fmt conversion from DXGI to CL
+ fmt.image_channel_order = 0; // CL_RGBA;
+ fmt.image_channel_data_type = 0; // CL_UNSIGNED_INT8;
- switch(dxgiFmt)
- {
+ switch (dxgiFmt) {
case DXGI_FORMAT_R32G32B32A32_TYPELESS:
- fmt.image_channel_order = CL_RGBA;
- break;
+ fmt.image_channel_order = CL_RGBA;
+ break;
case DXGI_FORMAT_R32G32B32A32_FLOAT:
- fmt.image_channel_order = CL_RGBA;
- fmt.image_channel_data_type = CL_FLOAT;
- break;
+ fmt.image_channel_order = CL_RGBA;
+ fmt.image_channel_data_type = CL_FLOAT;
+ break;
case DXGI_FORMAT_R32G32B32A32_UINT:
- fmt.image_channel_order = CL_RGBA;
- fmt.image_channel_data_type = CL_UNSIGNED_INT32;
- break;
+ fmt.image_channel_order = CL_RGBA;
+ fmt.image_channel_data_type = CL_UNSIGNED_INT32;
+ break;
case DXGI_FORMAT_R32G32B32A32_SINT:
- fmt.image_channel_order = CL_RGBA;
- fmt.image_channel_data_type = CL_SIGNED_INT32;
- break;
+ fmt.image_channel_order = CL_RGBA;
+ fmt.image_channel_data_type = CL_SIGNED_INT32;
+ break;
case DXGI_FORMAT_R32G32B32_TYPELESS:
- fmt.image_channel_order = CL_RGB;
- break;
+ fmt.image_channel_order = CL_RGB;
+ break;
case DXGI_FORMAT_R32G32B32_FLOAT:
- fmt.image_channel_order = CL_RGB;
- fmt.image_channel_data_type = CL_FLOAT;
- break;
+ fmt.image_channel_order = CL_RGB;
+ fmt.image_channel_data_type = CL_FLOAT;
+ break;
case DXGI_FORMAT_R32G32B32_UINT:
- fmt.image_channel_order = CL_RGB;
- fmt.image_channel_data_type = CL_UNSIGNED_INT32;
- break;
+ fmt.image_channel_order = CL_RGB;
+ fmt.image_channel_data_type = CL_UNSIGNED_INT32;
+ break;
case DXGI_FORMAT_R32G32B32_SINT:
- fmt.image_channel_order = CL_RGB;
- fmt.image_channel_data_type = CL_SIGNED_INT32;
- break;
+ fmt.image_channel_order = CL_RGB;
+ fmt.image_channel_data_type = CL_SIGNED_INT32;
+ break;
case DXGI_FORMAT_R16G16B16A16_TYPELESS:
- fmt.image_channel_order = CL_RGBA;
- break;
+ fmt.image_channel_order = CL_RGBA;
+ break;
case DXGI_FORMAT_R16G16B16A16_FLOAT:
- fmt.image_channel_order = CL_RGBA;
- fmt.image_channel_data_type = CL_HALF_FLOAT;
- break;
+ fmt.image_channel_order = CL_RGBA;
+ fmt.image_channel_data_type = CL_HALF_FLOAT;
+ break;
case DXGI_FORMAT_R16G16B16A16_UNORM:
- fmt.image_channel_order = CL_RGBA;
- fmt.image_channel_data_type = CL_UNORM_INT16;
- break;
+ fmt.image_channel_order = CL_RGBA;
+ fmt.image_channel_data_type = CL_UNORM_INT16;
+ break;
case DXGI_FORMAT_R16G16B16A16_UINT:
- fmt.image_channel_order = CL_RGBA;
- fmt.image_channel_data_type = CL_UNSIGNED_INT16;
- break;
+ fmt.image_channel_order = CL_RGBA;
+ fmt.image_channel_data_type = CL_UNSIGNED_INT16;
+ break;
case DXGI_FORMAT_R16G16B16A16_SNORM:
- fmt.image_channel_order = CL_RGBA;
- fmt.image_channel_data_type = CL_SNORM_INT16;
- break;
+ fmt.image_channel_order = CL_RGBA;
+ fmt.image_channel_data_type = CL_SNORM_INT16;
+ break;
case DXGI_FORMAT_R16G16B16A16_SINT:
- fmt.image_channel_order = CL_RGBA;
- fmt.image_channel_data_type = CL_SIGNED_INT16;
- break;
+ fmt.image_channel_order = CL_RGBA;
+ fmt.image_channel_data_type = CL_SIGNED_INT16;
+ break;
case DXGI_FORMAT_R32G32_TYPELESS:
- fmt.image_channel_order = CL_RG;
- break;
+ fmt.image_channel_order = CL_RG;
+ break;
case DXGI_FORMAT_R32G32_FLOAT:
- fmt.image_channel_order = CL_RG;
- fmt.image_channel_data_type = CL_FLOAT;
- break;
+ fmt.image_channel_order = CL_RG;
+ fmt.image_channel_data_type = CL_FLOAT;
+ break;
case DXGI_FORMAT_R32G32_UINT:
- fmt.image_channel_order = CL_RG;
- fmt.image_channel_data_type = CL_UNSIGNED_INT32;
- break;
+ fmt.image_channel_order = CL_RG;
+ fmt.image_channel_data_type = CL_UNSIGNED_INT32;
+ break;
case DXGI_FORMAT_R32G32_SINT:
- fmt.image_channel_order = CL_RG;
- fmt.image_channel_data_type = CL_SIGNED_INT32;
- break;
+ fmt.image_channel_order = CL_RG;
+ fmt.image_channel_data_type = CL_SIGNED_INT32;
+ break;
case DXGI_FORMAT_R32G8X24_TYPELESS:
- break;
+ break;
case DXGI_FORMAT_D32_FLOAT_S8X24_UINT:
- break;
+ break;
case DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS:
- break;
+ break;
case DXGI_FORMAT_X32_TYPELESS_G8X24_UINT:
- break;
+ break;
case DXGI_FORMAT_R10G10B10A2_TYPELESS:
- fmt.image_channel_order = CL_RGBA;
- break;
+ fmt.image_channel_order = CL_RGBA;
+ break;
case DXGI_FORMAT_R10G10B10A2_UNORM:
- fmt.image_channel_order = CL_RGBA;
- break;
+ fmt.image_channel_order = CL_RGBA;
+ break;
case DXGI_FORMAT_R10G10B10A2_UINT:
- fmt.image_channel_order = CL_RGBA;
- break;
+ fmt.image_channel_order = CL_RGBA;
+ break;
case DXGI_FORMAT_R11G11B10_FLOAT:
- fmt.image_channel_order = CL_RGB;
- break;
+ fmt.image_channel_order = CL_RGB;
+ break;
case DXGI_FORMAT_R8G8B8A8_TYPELESS:
- fmt.image_channel_order = CL_RGBA;
- break;
+ fmt.image_channel_order = CL_RGBA;
+ break;
case DXGI_FORMAT_R8G8B8A8_UNORM:
- fmt.image_channel_order = CL_RGBA;
- fmt.image_channel_data_type = CL_UNORM_INT8;
- break;
+ fmt.image_channel_order = CL_RGBA;
+ fmt.image_channel_data_type = CL_UNORM_INT8;
+ break;
case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB:
- fmt.image_channel_order = CL_RGBA;
- fmt.image_channel_data_type = CL_UNORM_INT8;
- break;
+ fmt.image_channel_order = CL_RGBA;
+ fmt.image_channel_data_type = CL_UNORM_INT8;
+ break;
case DXGI_FORMAT_R8G8B8A8_UINT:
- fmt.image_channel_order = CL_RGBA;
- fmt.image_channel_data_type = CL_UNSIGNED_INT8;
- break;
+ fmt.image_channel_order = CL_RGBA;
+ fmt.image_channel_data_type = CL_UNSIGNED_INT8;
+ break;
case DXGI_FORMAT_R8G8B8A8_SNORM:
- fmt.image_channel_order = CL_RGBA;
- fmt.image_channel_data_type = CL_SNORM_INT8;
- break;
+ fmt.image_channel_order = CL_RGBA;
+ fmt.image_channel_data_type = CL_SNORM_INT8;
+ break;
case DXGI_FORMAT_R8G8B8A8_SINT:
- fmt.image_channel_order = CL_RGBA;
- fmt.image_channel_data_type = CL_SIGNED_INT8;
- break;
+ fmt.image_channel_order = CL_RGBA;
+ fmt.image_channel_data_type = CL_SIGNED_INT8;
+ break;
case DXGI_FORMAT_R16G16_TYPELESS:
- fmt.image_channel_order = CL_RG;
- break;
+ fmt.image_channel_order = CL_RG;
+ break;
case DXGI_FORMAT_R16G16_FLOAT:
- fmt.image_channel_order = CL_RG;
- fmt.image_channel_data_type = CL_HALF_FLOAT;
- break;
+ fmt.image_channel_order = CL_RG;
+ fmt.image_channel_data_type = CL_HALF_FLOAT;
+ break;
case DXGI_FORMAT_R16G16_UNORM:
- fmt.image_channel_order = CL_RG;
- fmt.image_channel_data_type = CL_UNORM_INT16;
- break;
+ fmt.image_channel_order = CL_RG;
+ fmt.image_channel_data_type = CL_UNORM_INT16;
+ break;
case DXGI_FORMAT_R16G16_UINT:
- fmt.image_channel_order = CL_RG;
- fmt.image_channel_data_type = CL_UNSIGNED_INT16;
- break;
+ fmt.image_channel_order = CL_RG;
+ fmt.image_channel_data_type = CL_UNSIGNED_INT16;
+ break;
case DXGI_FORMAT_R16G16_SNORM:
- fmt.image_channel_order = CL_RG;
- fmt.image_channel_data_type = CL_SNORM_INT16;
- break;
+ fmt.image_channel_order = CL_RG;
+ fmt.image_channel_data_type = CL_SNORM_INT16;
+ break;
case DXGI_FORMAT_R16G16_SINT:
- fmt.image_channel_order = CL_RG;
- fmt.image_channel_data_type = CL_SIGNED_INT16;
- break;
+ fmt.image_channel_order = CL_RG;
+ fmt.image_channel_data_type = CL_SIGNED_INT16;
+ break;
case DXGI_FORMAT_R32_TYPELESS:
- fmt.image_channel_order = CL_R;
- break;
+ fmt.image_channel_order = CL_R;
+ break;
case DXGI_FORMAT_D32_FLOAT:
- break;
+ break;
case DXGI_FORMAT_R32_FLOAT:
- fmt.image_channel_order = CL_R;
- fmt.image_channel_data_type = CL_FLOAT;
- break;
+ fmt.image_channel_order = CL_R;
+ fmt.image_channel_data_type = CL_FLOAT;
+ break;
case DXGI_FORMAT_R32_UINT:
- fmt.image_channel_order = CL_R;
- fmt.image_channel_data_type = CL_UNSIGNED_INT32;
- break;
+ fmt.image_channel_order = CL_R;
+ fmt.image_channel_data_type = CL_UNSIGNED_INT32;
+ break;
case DXGI_FORMAT_R32_SINT:
- fmt.image_channel_order = CL_R;
- fmt.image_channel_data_type = CL_SIGNED_INT32;
- break;
+ fmt.image_channel_order = CL_R;
+ fmt.image_channel_data_type = CL_SIGNED_INT32;
+ break;
case DXGI_FORMAT_R24G8_TYPELESS:
- fmt.image_channel_order = CL_RG;
- break;
+ fmt.image_channel_order = CL_RG;
+ break;
case DXGI_FORMAT_D24_UNORM_S8_UINT:
- break;
+ break;
case DXGI_FORMAT_R24_UNORM_X8_TYPELESS:
- break;
+ break;
case DXGI_FORMAT_X24_TYPELESS_G8_UINT:
- break;
+ break;
case DXGI_FORMAT_R9G9B9E5_SHAREDEXP:
- break;
+ break;
case DXGI_FORMAT_R8G8_B8G8_UNORM:
- fmt.image_channel_data_type = CL_UNORM_INT8;
- break;
+ fmt.image_channel_data_type = CL_UNORM_INT8;
+ break;
case DXGI_FORMAT_G8R8_G8B8_UNORM:
- fmt.image_channel_data_type = CL_UNORM_INT8;
- break;
+ fmt.image_channel_data_type = CL_UNORM_INT8;
+ break;
case DXGI_FORMAT_B8G8R8A8_UNORM:
- fmt.image_channel_order = CL_BGRA;
- fmt.image_channel_data_type = CL_UNORM_INT8;
- break;
+ fmt.image_channel_order = CL_BGRA;
+ fmt.image_channel_data_type = CL_UNORM_INT8;
+ break;
case DXGI_FORMAT_B8G8R8X8_UNORM:
- fmt.image_channel_data_type = CL_UNORM_INT8;
- break;
+ fmt.image_channel_data_type = CL_UNORM_INT8;
+ break;
case DXGI_FORMAT_R8G8_TYPELESS:
- fmt.image_channel_order = CL_RG;
- break;
+ fmt.image_channel_order = CL_RG;
+ break;
case DXGI_FORMAT_R8G8_UNORM:
- fmt.image_channel_order = CL_RG;
- fmt.image_channel_data_type = CL_UNORM_INT8;
- break;
+ fmt.image_channel_order = CL_RG;
+ fmt.image_channel_data_type = CL_UNORM_INT8;
+ break;
case DXGI_FORMAT_R8G8_UINT:
- fmt.image_channel_order = CL_RG;
- fmt.image_channel_data_type = CL_UNSIGNED_INT8;
- break;
+ fmt.image_channel_order = CL_RG;
+ fmt.image_channel_data_type = CL_UNSIGNED_INT8;
+ break;
case DXGI_FORMAT_R8G8_SNORM:
- fmt.image_channel_order = CL_RG;
- fmt.image_channel_data_type = CL_SNORM_INT8;
- break;
+ fmt.image_channel_order = CL_RG;
+ fmt.image_channel_data_type = CL_SNORM_INT8;
+ break;
case DXGI_FORMAT_R8G8_SINT:
- fmt.image_channel_order = CL_RG;
- fmt.image_channel_data_type = CL_SIGNED_INT8;
- break;
+ fmt.image_channel_order = CL_RG;
+ fmt.image_channel_data_type = CL_SIGNED_INT8;
+ break;
case DXGI_FORMAT_R16_TYPELESS:
- fmt.image_channel_order = CL_R;
- break;
+ fmt.image_channel_order = CL_R;
+ break;
case DXGI_FORMAT_R16_FLOAT:
- fmt.image_channel_order = CL_R;
- fmt.image_channel_data_type = CL_HALF_FLOAT;
- break;
+ fmt.image_channel_order = CL_R;
+ fmt.image_channel_data_type = CL_HALF_FLOAT;
+ break;
case DXGI_FORMAT_D16_UNORM:
- fmt.image_channel_data_type = CL_UNORM_INT16;
- break;
+ fmt.image_channel_data_type = CL_UNORM_INT16;
+ break;
case DXGI_FORMAT_R16_UNORM:
- fmt.image_channel_order = CL_R;
- fmt.image_channel_data_type = CL_UNORM_INT16;
- break;
+ fmt.image_channel_order = CL_R;
+ fmt.image_channel_data_type = CL_UNORM_INT16;
+ break;
case DXGI_FORMAT_R16_UINT:
- fmt.image_channel_order = CL_R;
- fmt.image_channel_data_type = CL_UNSIGNED_INT16;
- break;
+ fmt.image_channel_order = CL_R;
+ fmt.image_channel_data_type = CL_UNSIGNED_INT16;
+ break;
case DXGI_FORMAT_R16_SNORM:
- fmt.image_channel_order = CL_R;
- fmt.image_channel_data_type = CL_SNORM_INT16;
- break;
+ fmt.image_channel_order = CL_R;
+ fmt.image_channel_data_type = CL_SNORM_INT16;
+ break;
case DXGI_FORMAT_R16_SINT:
- fmt.image_channel_order = CL_R;
- fmt.image_channel_data_type = CL_SIGNED_INT16;
- break;
+ fmt.image_channel_order = CL_R;
+ fmt.image_channel_data_type = CL_SIGNED_INT16;
+ break;
case DXGI_FORMAT_B5G6R5_UNORM:
- fmt.image_channel_data_type = CL_UNORM_SHORT_565;
- break;
+ fmt.image_channel_data_type = CL_UNORM_SHORT_565;
+ break;
case DXGI_FORMAT_B5G5R5A1_UNORM:
- fmt.image_channel_order = CL_BGRA;
- break;
+ fmt.image_channel_order = CL_BGRA;
+ break;
case DXGI_FORMAT_R8_TYPELESS:
- fmt.image_channel_order = CL_R;
- break;
+ fmt.image_channel_order = CL_R;
+ break;
case DXGI_FORMAT_R8_UNORM:
- fmt.image_channel_order = CL_R;
- fmt.image_channel_data_type = CL_UNORM_INT8;
- break;
+ fmt.image_channel_order = CL_R;
+ fmt.image_channel_data_type = CL_UNORM_INT8;
+ break;
case DXGI_FORMAT_R8_UINT:
- fmt.image_channel_order = CL_R;
- fmt.image_channel_data_type = CL_UNSIGNED_INT8;
- break;
+ fmt.image_channel_order = CL_R;
+ fmt.image_channel_data_type = CL_UNSIGNED_INT8;
+ break;
case DXGI_FORMAT_R8_SNORM:
- fmt.image_channel_order = CL_R;
- fmt.image_channel_data_type = CL_SNORM_INT8;
- break;
+ fmt.image_channel_order = CL_R;
+ fmt.image_channel_data_type = CL_SNORM_INT8;
+ break;
case DXGI_FORMAT_R8_SINT:
- fmt.image_channel_order = CL_R;
- fmt.image_channel_data_type = CL_SIGNED_INT8;
- break;
+ fmt.image_channel_order = CL_R;
+ fmt.image_channel_data_type = CL_SIGNED_INT8;
+ break;
case DXGI_FORMAT_A8_UNORM:
- fmt.image_channel_order = CL_A;
- fmt.image_channel_data_type = CL_UNORM_INT8;
- break;
+ fmt.image_channel_order = CL_A;
+ fmt.image_channel_data_type = CL_UNORM_INT8;
+ break;
case DXGI_FORMAT_R1_UNORM:
- fmt.image_channel_order = CL_R;
- break;
+ fmt.image_channel_order = CL_R;
+ break;
case DXGI_FORMAT_BC1_TYPELESS:
case DXGI_FORMAT_BC1_UNORM:
@@ -2028,24 +1862,23 @@ D3D11Object::getCLFormatFromDXGI(DXGI_FORMAT dxgiFmt, cl_uint plane)
case DXGI_FORMAT_BC5_TYPELESS:
case DXGI_FORMAT_BC5_UNORM:
case DXGI_FORMAT_BC5_SNORM:
- break;
- case DXGI_FORMAT_NV12:
- fmt.image_channel_order = CL_R;
- fmt.image_channel_data_type = CL_UNSIGNED_INT8;
+ break;
+ case DXGI_FORMAT_NV12:
+ fmt.image_channel_order = CL_R;
+ fmt.image_channel_data_type = CL_UNSIGNED_INT8;
- if(plane == 1) {
- fmt.image_channel_order = CL_RG;
- }
- break;
+ if (plane == 1) {
+ fmt.image_channel_order = CL_RG;
+ }
+ break;
default:
- _ASSERT(FALSE);
- break;
- }
+ _ASSERT(FALSE);
+ break;
+ }
- return fmt;
+ return fmt;
}
-} //namespace amd
-
-#endif //_WIN32
+} // namespace amd
+#endif //_WIN32
diff --git a/opencl/api/opencl/amdocl/cl_d3d9.cpp b/opencl/api/opencl/amdocl/cl_d3d9.cpp
index 2e64268005..f6d2577e92 100644
--- a/opencl/api/opencl/amdocl/cl_d3d9.cpp
+++ b/opencl/api/opencl/amdocl/cl_d3d9.cpp
@@ -18,230 +18,202 @@
#define D3DFMT_YV_12 static_cast(MAKEFOURCC('Y', 'V', '1', '2'))
-RUNTIME_ENTRY(cl_int, 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_int errcode;
- //Accept an array of DX9 devices here as the spec mention of array of num_media_adapters size.
- IDirect3DDevice9Ex** d3d9_device = static_cast(media_adapters);
- cl_device_id* gpu_devices = NULL;
- cl_uint num_gpu_devices = 0;
- static const bool VALIDATE_ONLY = true;
+RUNTIME_ENTRY(cl_int, 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_int errcode;
+ // Accept an array of DX9 devices here as the spec mention of array of num_media_adapters size.
+ IDirect3DDevice9Ex** d3d9_device = static_cast(media_adapters);
+ cl_device_id* gpu_devices = NULL;
+ cl_uint num_gpu_devices = 0;
+ static const bool VALIDATE_ONLY = true;
- if (platform != NULL && platform != AMD_PLATFORM) {
- LogWarning("\"platrform\" is not a valid AMD platform");
- return CL_INVALID_PLATFORM;
- }
- //check if input parameter are correct
- if ( (num_media_adapters == 0)
- ||(media_adapters_type == NULL)
- ||(media_adapters == NULL)
- ||(media_adapter_set != CL_PREFERRED_DEVICES_FOR_DX9_MEDIA_ADAPTER_KHR && media_adapter_set != CL_ALL_DEVICES_FOR_DX9_MEDIA_ADAPTER_KHR)
- ||(num_entries == 0 && devices != NULL)
- ) {
- return CL_INVALID_VALUE;
- }
- // Get GPU devices
- errcode = clGetDeviceIDs(NULL, CL_DEVICE_TYPE_GPU, 0, NULL, &num_gpu_devices);
- if (errcode != CL_SUCCESS && errcode != CL_DEVICE_NOT_FOUND) {
- return CL_INVALID_VALUE;
- }
+ if (platform != NULL && platform != AMD_PLATFORM) {
+ LogWarning("\"platrform\" is not a valid AMD platform");
+ return CL_INVALID_PLATFORM;
+ }
+ // check if input parameter are correct
+ if ((num_media_adapters == 0) || (media_adapters_type == NULL) || (media_adapters == NULL) ||
+ (media_adapter_set != CL_PREFERRED_DEVICES_FOR_DX9_MEDIA_ADAPTER_KHR &&
+ media_adapter_set != CL_ALL_DEVICES_FOR_DX9_MEDIA_ADAPTER_KHR) ||
+ (num_entries == 0 && devices != NULL)) {
+ return CL_INVALID_VALUE;
+ }
+ // Get GPU devices
+ errcode = clGetDeviceIDs(NULL, CL_DEVICE_TYPE_GPU, 0, NULL, &num_gpu_devices);
+ if (errcode != CL_SUCCESS && errcode != CL_DEVICE_NOT_FOUND) {
+ return CL_INVALID_VALUE;
+ }
- if (!num_gpu_devices) {
- *not_null(num_devices) = 0;
- return CL_DEVICE_NOT_FOUND;
- }
+ if (!num_gpu_devices) {
+ *not_null(num_devices) = 0;
+ return CL_DEVICE_NOT_FOUND;
+ }
- switch(media_adapter_set) {
+ switch (media_adapter_set) {
case CL_PREFERRED_DEVICES_FOR_DX9_MEDIA_ADAPTER_KHR:
case CL_ALL_DEVICES_FOR_DX9_MEDIA_ADAPTER_KHR: {
- gpu_devices = new cl_device_id[num_gpu_devices];
- errcode = clGetDeviceIDs(NULL, CL_DEVICE_TYPE_GPU, num_gpu_devices, gpu_devices, NULL);
- if (errcode != CL_SUCCESS) {
- break;
- }
-
- std::vector compatible_devices;
- for (cl_uint i = 0; i < num_gpu_devices; ++i) {
- cl_device_id device = gpu_devices[i];
- amd::Context::Flags context_flag;
- amd::Context::DeviceFlagIdx devIdx;
- switch (media_adapters_type[i]) {
- case CL_ADAPTER_D3D9_KHR:
- context_flag = amd::Context::Flags::D3D9DeviceKhr;
- devIdx = amd::Context::DeviceFlagIdx::D3D9DeviceKhrIdx;
- break;
- case CL_ADAPTER_D3D9EX_KHR:
- context_flag = amd::Context::Flags::D3D9DeviceEXKhr;
- devIdx = amd::Context::DeviceFlagIdx::D3D9DeviceEXKhrIdx;
- break;
- case CL_ADAPTER_DXVA_KHR:
- context_flag = amd::Context::Flags::D3D9DeviceVAKhr;
- devIdx = amd::Context::DeviceFlagIdx::D3D9DeviceVAKhrIdx;
- break;
- }
-
- for (cl_uint j = 0; j < num_media_adapters; ++j) {
- //Since there can be multiple DX9 adapters passed in the array we need to validate interopability with each.
- void * external_device[amd::Context::DeviceFlagIdx::LastDeviceFlagIdx] = {};
- external_device[devIdx] = d3d9_device[j];
-
- if (is_valid(device) && (media_adapters_type[j] == CL_ADAPTER_D3D9EX_KHR) &&
- as_amd(device)->bindExternalDevice(context_flag,
- external_device, NULL, VALIDATE_ONLY)) {
- compatible_devices.push_back(as_amd(device));
- }
- }
- }
- if (compatible_devices.size() == 0) {
- *not_null(num_devices) = 0;
- errcode = CL_DEVICE_NOT_FOUND;
- break;
- }
-
- std::vector::iterator it = compatible_devices.begin();
- cl_uint compatible_count = std::min(num_entries, (cl_uint)compatible_devices.size());
-
- while (compatible_count--) {
- *devices++ = as_cl(*it++);
- --num_entries;
- }
- while (num_entries--) {
- *devices++ = (cl_device_id) 0;
- }
-
- *not_null(num_devices) = (cl_uint)compatible_devices.size();
- }
+ gpu_devices = new cl_device_id[num_gpu_devices];
+ errcode = clGetDeviceIDs(NULL, CL_DEVICE_TYPE_GPU, num_gpu_devices, gpu_devices, NULL);
+ if (errcode != CL_SUCCESS) {
break;
+ }
+
+ std::vector compatible_devices;
+ for (cl_uint i = 0; i < num_gpu_devices; ++i) {
+ cl_device_id device = gpu_devices[i];
+ amd::Context::Flags context_flag;
+ amd::Context::DeviceFlagIdx devIdx;
+ switch (media_adapters_type[i]) {
+ case CL_ADAPTER_D3D9_KHR:
+ context_flag = amd::Context::Flags::D3D9DeviceKhr;
+ devIdx = amd::Context::DeviceFlagIdx::D3D9DeviceKhrIdx;
+ break;
+ case CL_ADAPTER_D3D9EX_KHR:
+ context_flag = amd::Context::Flags::D3D9DeviceEXKhr;
+ devIdx = amd::Context::DeviceFlagIdx::D3D9DeviceEXKhrIdx;
+ break;
+ case CL_ADAPTER_DXVA_KHR:
+ context_flag = amd::Context::Flags::D3D9DeviceVAKhr;
+ devIdx = amd::Context::DeviceFlagIdx::D3D9DeviceVAKhrIdx;
+ break;
+ }
+
+ for (cl_uint j = 0; j < num_media_adapters; ++j) {
+ // Since there can be multiple DX9 adapters passed in the array we need to validate
+ // interopability with each.
+ void* external_device[amd::Context::DeviceFlagIdx::LastDeviceFlagIdx] = {};
+ external_device[devIdx] = d3d9_device[j];
+
+ if (is_valid(device) && (media_adapters_type[j] == CL_ADAPTER_D3D9EX_KHR) &&
+ as_amd(device)->bindExternalDevice(context_flag, external_device, NULL,
+ VALIDATE_ONLY)) {
+ compatible_devices.push_back(as_amd(device));
+ }
+ }
+ }
+ if (compatible_devices.size() == 0) {
+ *not_null(num_devices) = 0;
+ errcode = CL_DEVICE_NOT_FOUND;
+ break;
+ }
+
+ std::vector::iterator it = compatible_devices.begin();
+ cl_uint compatible_count = std::min(num_entries, (cl_uint)compatible_devices.size());
+
+ while (compatible_count--) {
+ *devices++ = as_cl(*it++);
+ --num_entries;
+ }
+ while (num_entries--) {
+ *devices++ = (cl_device_id)0;
+ }
+
+ *not_null(num_devices) = (cl_uint)compatible_devices.size();
+ } break;
default:
- LogWarning("\"d3d9_device_set\" is invalid");
- errcode = CL_INVALID_VALUE;
- }
+ LogWarning("\"d3d9_device_set\" is invalid");
+ errcode = CL_INVALID_VALUE;
+ }
- delete[] gpu_devices;
- return errcode;
+ delete[] gpu_devices;
+ return errcode;
}
RUNTIME_EXIT
-RUNTIME_ENTRY_RET(cl_mem, 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_mem clMemObj = NULL;
+RUNTIME_ENTRY_RET(cl_mem, 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_mem clMemObj = NULL;
- cl_dx9_surface_info_khr * cl_surf_info = NULL;
+ cl_dx9_surface_info_khr* cl_surf_info = NULL;
- if(!is_valid(context)) {
- *not_null(errcode_ret) = CL_INVALID_CONTEXT;
- LogWarning("invalid parameter \"context\"");
- return clMemObj;
+ if (!is_valid(context)) {
+ *not_null(errcode_ret) = CL_INVALID_CONTEXT;
+ LogWarning("invalid parameter \"context\"");
+ return clMemObj;
+ }
+
+ if (!flags) flags = CL_MEM_READ_WRITE;
+ if (!(((flags & CL_MEM_READ_ONLY) == CL_MEM_READ_ONLY) ||
+ ((flags & CL_MEM_WRITE_ONLY) == CL_MEM_WRITE_ONLY) ||
+ ((flags & CL_MEM_READ_WRITE) == CL_MEM_READ_WRITE))) {
+ *not_null(errcode_ret) = CL_INVALID_VALUE;
+ LogWarning("invalid parameter \"flags\"");
+ return clMemObj;
+ }
+
+ if ((adapter_type != CL_ADAPTER_D3D9_KHR) && (adapter_type != CL_ADAPTER_D3D9EX_KHR) &&
+ (adapter_type != CL_ADAPTER_DXVA_KHR)) {
+ *not_null(errcode_ret) = CL_INVALID_VALUE;
+ return clMemObj;
+ }
+
+ if (!surface_info) {
+ *not_null(errcode_ret) = CL_INVALID_VALUE;
+ LogWarning("parameter \"pD3DResource\" is a NULL pointer");
+ return clMemObj;
+ }
+
+ cl_surf_info = (cl_dx9_surface_info_khr*)surface_info;
+ IDirect3DSurface9* pD3D9Resource = cl_surf_info->resource;
+ HANDLE shared_handle = cl_surf_info->shared_handle;
+
+ if (!pD3D9Resource) {
+ *not_null(errcode_ret) = CL_INVALID_VALUE;
+ LogWarning("parameter \"surface_info\" is a NULL pointer");
+ return clMemObj;
+ }
+
+ D3DSURFACE_DESC Desc;
+ pD3D9Resource->GetDesc(&Desc);
+
+ if ((Desc.Format != D3DFMT_NV_12) && (Desc.Format != D3DFMT_YV_12) && (plane != 0)) {
+ *not_null(errcode_ret) = CL_INVALID_VALUE;
+ LogWarning("The plane has to be Zero if the surface format is non-planar !");
+ return clMemObj;
+ }
+
+ // Check for image support
+ const std::vector& devices = as_amd(context)->devices();
+ bool supportPass = false;
+ bool sizePass = false;
+ std::vector::const_iterator it;
+ for (it = devices.begin(); it != devices.end(); ++it) {
+ if ((*it)->info().imageSupport_) {
+ supportPass = true;
}
-
- if(!flags) flags = CL_MEM_READ_WRITE;
- if(!(((flags & CL_MEM_READ_ONLY) == CL_MEM_READ_ONLY)
- || ((flags & CL_MEM_WRITE_ONLY) == CL_MEM_WRITE_ONLY)
- || ((flags & CL_MEM_READ_WRITE) == CL_MEM_READ_WRITE))) {
- *not_null(errcode_ret) = CL_INVALID_VALUE;
- LogWarning("invalid parameter \"flags\"");
- return clMemObj;
- }
-
- if ((adapter_type != CL_ADAPTER_D3D9_KHR)
- && (adapter_type != CL_ADAPTER_D3D9EX_KHR)
- && (adapter_type != CL_ADAPTER_DXVA_KHR)) {
- *not_null(errcode_ret) = CL_INVALID_VALUE;
- return clMemObj;
- }
-
- if (!surface_info) {
- *not_null(errcode_ret) = CL_INVALID_VALUE;
- LogWarning("parameter \"pD3DResource\" is a NULL pointer");
- return clMemObj;
- }
-
- cl_surf_info = (cl_dx9_surface_info_khr *) surface_info;
- IDirect3DSurface9 * pD3D9Resource = cl_surf_info->resource;
- HANDLE shared_handle = cl_surf_info->shared_handle;
-
- if (!pD3D9Resource) {
- *not_null(errcode_ret) = CL_INVALID_VALUE;
- LogWarning("parameter \"surface_info\" is a NULL pointer");
- return clMemObj;
- }
-
- D3DSURFACE_DESC Desc;
- pD3D9Resource->GetDesc(&Desc);
-
- if ((Desc.Format != D3DFMT_NV_12) && (Desc.Format != D3DFMT_YV_12) &&
- (plane != 0)) {
- *not_null(errcode_ret) = CL_INVALID_VALUE;
- LogWarning("The plane has to be Zero if the surface format is non-planar !");
- return clMemObj;
- }
-
- // Check for image support
- const std::vector& devices = as_amd(context)->devices();
- bool supportPass = false;
- bool sizePass = false;
- std::vector::const_iterator it;
- for (it = devices.begin(); it != devices.end(); ++it) {
- if ((*it)->info().imageSupport_) {
- supportPass = true;
- }
- }
- if (!supportPass) {
- *not_null(errcode_ret) = CL_INVALID_OPERATION;
- LogWarning("there are no devices in context to support images");
- return (cl_mem) 0;
- }
- //Verify the resource is a 2D image
- return amd::clCreateImage2DFromD3D9ResourceAMD(
- *as_amd(context),
- flags,
- adapter_type,
- cl_surf_info,
- plane,
- errcode_ret);
+ }
+ if (!supportPass) {
+ *not_null(errcode_ret) = CL_INVALID_OPERATION;
+ LogWarning("there are no devices in context to support images");
+ return (cl_mem)0;
+ }
+ // Verify the resource is a 2D image
+ return amd::clCreateImage2DFromD3D9ResourceAMD(*as_amd(context), flags, adapter_type,
+ cl_surf_info, plane, errcode_ret);
}
RUNTIME_EXIT
-RUNTIME_ENTRY(cl_int, 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))
-{
- return amd::clEnqueueAcquireExtObjectsAMD(command_queue, num_objects,
- mem_objects, num_events_in_wait_list, event_wait_list, event,
- CL_COMMAND_ACQUIRE_DX9_MEDIA_SURFACES_KHR);
+RUNTIME_ENTRY(cl_int, 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)) {
+ return amd::clEnqueueAcquireExtObjectsAMD(command_queue, num_objects, mem_objects,
+ num_events_in_wait_list, event_wait_list, event,
+ CL_COMMAND_ACQUIRE_DX9_MEDIA_SURFACES_KHR);
}
RUNTIME_EXIT
-RUNTIME_ENTRY(cl_int, 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))
-{
- return amd::clEnqueueReleaseExtObjectsAMD(command_queue, num_objects,
- mem_objects, num_events_in_wait_list, event_wait_list, event,
- CL_COMMAND_RELEASE_DX9_MEDIA_SURFACES_KHR);
+RUNTIME_ENTRY(cl_int, 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)) {
+ return amd::clEnqueueReleaseExtObjectsAMD(command_queue, num_objects, mem_objects,
+ num_events_in_wait_list, event_wait_list, event,
+ CL_COMMAND_RELEASE_DX9_MEDIA_SURFACES_KHR);
}
RUNTIME_EXIT
@@ -250,8 +222,7 @@ RUNTIME_EXIT
// namespace amd
//
//
-namespace amd
-{
+namespace amd {
/*! @}
* \addtogroup CL-D3D9 interop helper functions
* @{
@@ -265,85 +236,74 @@ Monitor D3D9Object::resLock_;
//
// clCreateImage2DFromD3D9ResourceAMD
//
-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_dx9_surface_info_khr* cl_surf_info =
- reinterpret_cast(surface_info);
- IDirect3DSurface9 * pD3D9Resource = cl_surf_info->resource;
- HANDLE shared_handle = cl_surf_info->shared_handle;
+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_dx9_surface_info_khr* cl_surf_info = reinterpret_cast(surface_info);
+ IDirect3DSurface9* pD3D9Resource = cl_surf_info->resource;
+ HANDLE shared_handle = cl_surf_info->shared_handle;
- D3D9Object obj;
- cl_int errcode = D3D9Object::initD3D9Object(amdContext,
- adapter_type, surface_info, plane, obj);
- if (CL_SUCCESS != errcode) {
- *not_null(errcode_ret) = errcode;
- return (cl_mem) 0;
- }
+ D3D9Object obj;
+ cl_int errcode = D3D9Object::initD3D9Object(amdContext, adapter_type, surface_info, plane, obj);
+ if (CL_SUCCESS != errcode) {
+ *not_null(errcode_ret) = errcode;
+ return (cl_mem)0;
+ }
- Image2DD3D9 *pImage2DD3D9 = new (amdContext)
- Image2DD3D9(amdContext, flags, obj);
- if (!pImage2DD3D9) {
- *not_null(errcode_ret) = CL_OUT_OF_HOST_MEMORY;
- return (cl_mem) 0;
- }
- if (!pImage2DD3D9->create()) {
- *not_null(errcode_ret) = CL_MEM_OBJECT_ALLOCATION_FAILURE;
- pImage2DD3D9->release();
- return (cl_mem) 0;
- }
+ Image2DD3D9* pImage2DD3D9 = new (amdContext) Image2DD3D9(amdContext, flags, obj);
+ if (!pImage2DD3D9) {
+ *not_null(errcode_ret) = CL_OUT_OF_HOST_MEMORY;
+ return (cl_mem)0;
+ }
+ if (!pImage2DD3D9->create()) {
+ *not_null(errcode_ret) = CL_MEM_OBJECT_ALLOCATION_FAILURE;
+ pImage2DD3D9->release();
+ return (cl_mem)0;
+ }
- *not_null(errcode_ret) = CL_SUCCESS;
- return as_cl(pImage2DD3D9);
+ *not_null(errcode_ret) = CL_SUCCESS;
+ return as_cl(pImage2DD3D9);
}
//
// Helper function SyncD3D9Objects
//
-void SyncD3D9Objects(std::vector& memObjects)
-{
- Memory*& mem = memObjects.front();
- if(!mem) {
- LogWarning("\nNULL memory object\n");
- return;
- }
- InteropObject* interop = mem->getInteropObj();
- if(!interop) {
- LogWarning("\nNULL interop object\n");
- return;
- }
- D3D9Object* d3d9Obj = interop->asD3D9Object();
- if(!d3d9Obj) {
- LogWarning("\nNULL D3D9 object\n");
- return;
- }
- IDirect3DQuery9* query = d3d9Obj->getQuery();
- if(!query) {
- LogWarning("\nNULL IDirect3DQuery9\n");
- return;
- }
- ScopedLock sl(d3d9Obj->getResLock());
- query->Issue(D3DISSUE_END);
- BOOL data = FALSE;
- while(S_OK != query->GetData(&data, sizeof(BOOL), D3DGETDATA_FLUSH))
- {
- }
+void SyncD3D9Objects(std::vector& memObjects) {
+ Memory*& mem = memObjects.front();
+ if (!mem) {
+ LogWarning("\nNULL memory object\n");
+ return;
+ }
+ InteropObject* interop = mem->getInteropObj();
+ if (!interop) {
+ LogWarning("\nNULL interop object\n");
+ return;
+ }
+ D3D9Object* d3d9Obj = interop->asD3D9Object();
+ if (!d3d9Obj) {
+ LogWarning("\nNULL D3D9 object\n");
+ return;
+ }
+ IDirect3DQuery9* query = d3d9Obj->getQuery();
+ if (!query) {
+ LogWarning("\nNULL IDirect3DQuery9\n");
+ return;
+ }
+ ScopedLock sl(d3d9Obj->getResLock());
+ query->Issue(D3DISSUE_END);
+ BOOL data = FALSE;
+ while (S_OK != query->GetData(&data, sizeof(BOOL), D3DGETDATA_FLUSH)) {
+ }
}
//
// Class D3D10Object implementation
//
-size_t
-D3D9Object::getElementBytes(D3DFORMAT d3d9Format, cl_uint plane)
-{
- size_t bytesPerPixel;
+size_t D3D9Object::getElementBytes(D3DFORMAT d3d9Format, cl_uint plane) {
+ size_t bytesPerPixel;
- switch(d3d9Format) {
+ switch (d3d9Format) {
case D3DFMT_UNKNOWN:
case D3DFMT_UYVY:
case D3DFMT_YUY2:
@@ -363,17 +323,17 @@ D3D9Object::getElementBytes(D3DFORMAT d3d9Format, cl_uint plane)
case D3DFMT_INDEX32:
case D3DFMT_MULTI2_ARGB8:
case D3DFMT_CxV8U8:
- // Less than 1 byte per pixel - needs special consideration
- bytesPerPixel = 0;
- break;
+ // Less than 1 byte per pixel - needs special consideration
+ bytesPerPixel = 0;
+ break;
case D3DFMT_R3G3B2:
case D3DFMT_P8:
case D3DFMT_A8:
case D3DFMT_L8:
case D3DFMT_A4L4:
- bytesPerPixel = 1;
- break;
+ bytesPerPixel = 1;
+ break;
case D3DFMT_R16F:
case D3DFMT_R5G6B5:
@@ -388,13 +348,13 @@ D3D9Object::getElementBytes(D3DFORMAT d3d9Format, cl_uint plane)
case D3DFMT_L6V5U5:
case D3DFMT_D16_LOCKABLE:
case D3DFMT_L16:
- bytesPerPixel = 2;
- break;
+ bytesPerPixel = 2;
+ break;
case D3DFMT_R8G8B8:
case D3DFMT_D24FS8:
- bytesPerPixel = 3;
- break;
+ bytesPerPixel = 3;
+ break;
case D3DFMT_D32F_LOCKABLE:
case D3DFMT_A8R8G8B8:
@@ -412,339 +372,318 @@ D3D9Object::getElementBytes(D3DFORMAT d3d9Format, cl_uint plane)
case D3DFMT_R8G8_B8G8:
case D3DFMT_G8R8_G8B8:
case D3DFMT_G16R16F:
- bytesPerPixel = 4;
- break;
+ bytesPerPixel = 4;
+ break;
case D3DFMT_G32R32F:
case D3DFMT_A16B16G16R16:
case D3DFMT_A16B16G16R16F:
case D3DFMT_Q16W16V16U16:
- bytesPerPixel = 8;
- break;
+ bytesPerPixel = 8;
+ break;
case D3DFMT_A32B32G32R32F:
- bytesPerPixel = 16;
- break;
-//#if !defined(D3D_DISABLE_9EX)
- //case D3DFMT_D32_LOCKABLE:
- //case D3DFMT_S8_LOCKABLE:
-//#endif // !D3D_DISABLE_9EX
+ bytesPerPixel = 16;
+ break;
+ //#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;
- }
- else if(plane == 1) {
- bytesPerPixel = 2;
- } //plane != 0 or != 1 shouldn't happen here
- break;
- case D3DFMT_YV_12:
+ if (plane == 0) {
bytesPerPixel = 1;
- break;
-
- default:
- bytesPerPixel = 0;
- _ASSERT(FALSE);
- break;
- }
- return bytesPerPixel;
-}
-
-void setObjDesc(amd::D3D9ObjDesc_t& objDesc, D3DSURFACE_DESC& resDesc, cl_uint plane)
-{
- objDesc.d3dPool_ = resDesc.Pool;
- objDesc.resType_ = resDesc.Type;
- objDesc.usage_ = resDesc.Usage;
- objDesc.d3dFormat_ = resDesc.Format;
- switch (resDesc.Format) {
- case D3DFMT_NV_12:
- objDesc.surfRect_.left = 0;
- objDesc.surfRect_.top = 0;
- if (plane == 0) {
- objDesc.objSize_.Height = resDesc.Height;
- objDesc.objSize_.Width = resDesc.Width;
- objDesc.surfRect_.right = resDesc.Width; //resDesc.Width/2-1;
- objDesc.surfRect_.bottom = 3*resDesc.Height/2;; //3*resDesc.Height/2-1;
- }
- else if(plane == 1) {
- objDesc.objSize_.Height = resDesc.Height/2;
- objDesc.objSize_.Width = resDesc.Width/2;
- 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
- break;
+ } else if (plane == 1) {
+ bytesPerPixel = 2;
+ } // plane != 0 or != 1 shouldn't happen here
+ break;
case D3DFMT_YV_12:
- objDesc.surfRect_.left = 0;
- if (plane == 0) {
- objDesc.objSize_.Height = resDesc.Height;
- objDesc.objSize_.Width = resDesc.Width;
- objDesc.surfRect_.top = 0;
- objDesc.surfRect_.right = resDesc.Width-1;
- objDesc.surfRect_.bottom = resDesc.Height-1;
- }
- else if(plane == 1) {
- objDesc.objSize_.Height = resDesc.Height/2;
- objDesc.objSize_.Width = resDesc.Width/2;
- objDesc.surfRect_.top = resDesc.Height;
- objDesc.surfRect_.right = resDesc.Width/2-1;
- objDesc.surfRect_.bottom = 3*resDesc.Height/2-1;
- }
- else if(plane == 2) {
- objDesc.objSize_.Height = resDesc.Height/2;
- objDesc.objSize_.Width = resDesc.Width/2;
- objDesc.surfRect_.top = 3*resDesc.Height/2;
- objDesc.surfRect_.right = resDesc.Width/2-1;
- objDesc.surfRect_.bottom = 2*resDesc.Height-1;
- } //plane > 0 or > 2 shouldn't happen here
- break;
+ bytesPerPixel = 1;
+ break;
+
default:
- objDesc.objSize_.Height = resDesc.Height;
- objDesc.objSize_.Width = resDesc.Width;
- objDesc.surfRect_.left = 0;
+ bytesPerPixel = 0;
+ _ASSERT(FALSE);
+ break;
+ }
+ return bytesPerPixel;
+}
+
+void setObjDesc(amd::D3D9ObjDesc_t& objDesc, D3DSURFACE_DESC& resDesc, cl_uint plane) {
+ objDesc.d3dPool_ = resDesc.Pool;
+ objDesc.resType_ = resDesc.Type;
+ objDesc.usage_ = resDesc.Usage;
+ objDesc.d3dFormat_ = resDesc.Format;
+ switch (resDesc.Format) {
+ case D3DFMT_NV_12:
+ objDesc.surfRect_.left = 0;
+ objDesc.surfRect_.top = 0;
+ if (plane == 0) {
+ objDesc.objSize_.Height = resDesc.Height;
+ objDesc.objSize_.Width = resDesc.Width;
+ objDesc.surfRect_.right = resDesc.Width; // resDesc.Width/2-1;
+ objDesc.surfRect_.bottom = 3 * resDesc.Height / 2;
+ ; // 3*resDesc.Height/2-1;
+ } else if (plane == 1) {
+ objDesc.objSize_.Height = resDesc.Height / 2;
+ objDesc.objSize_.Width = resDesc.Width / 2;
+ 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
+ break;
+ case D3DFMT_YV_12:
+ objDesc.surfRect_.left = 0;
+ if (plane == 0) {
+ objDesc.objSize_.Height = resDesc.Height;
+ objDesc.objSize_.Width = resDesc.Width;
objDesc.surfRect_.top = 0;
- objDesc.surfRect_.right = resDesc.Width-1;
- objDesc.surfRect_.bottom = resDesc.Height-1;
- break;
- }
+ objDesc.surfRect_.right = resDesc.Width - 1;
+ objDesc.surfRect_.bottom = resDesc.Height - 1;
+ } else if (plane == 1) {
+ objDesc.objSize_.Height = resDesc.Height / 2;
+ objDesc.objSize_.Width = resDesc.Width / 2;
+ objDesc.surfRect_.top = resDesc.Height;
+ objDesc.surfRect_.right = resDesc.Width / 2 - 1;
+ objDesc.surfRect_.bottom = 3 * resDesc.Height / 2 - 1;
+ } else if (plane == 2) {
+ objDesc.objSize_.Height = resDesc.Height / 2;
+ objDesc.objSize_.Width = resDesc.Width / 2;
+ objDesc.surfRect_.top = 3 * resDesc.Height / 2;
+ objDesc.surfRect_.right = resDesc.Width / 2 - 1;
+ objDesc.surfRect_.bottom = 2 * resDesc.Height - 1;
+ } // plane > 0 or > 2 shouldn't happen here
+ break;
+ default:
+ objDesc.objSize_.Height = resDesc.Height;
+ objDesc.objSize_.Width = resDesc.Width;
+ objDesc.surfRect_.left = 0;
+ objDesc.surfRect_.top = 0;
+ objDesc.surfRect_.right = resDesc.Width - 1;
+ objDesc.surfRect_.bottom = resDesc.Height - 1;
+ break;
+ }
}
-int
-D3D9Object::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)
-{
- ScopedLock sl(resLock_);
+int D3D9Object::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) {
+ ScopedLock sl(resLock_);
- IDirect3DDevice9Ex* pDev9Ex = NULL;
- cl_int errcode = CL_SUCCESS;
+ IDirect3DDevice9Ex* pDev9Ex = NULL;
+ cl_int errcode = CL_SUCCESS;
- // Check if this ressource has already been used for interop
- IDirect3DSurface9 * pD3D9res = cl_surf_info->resource;
- HANDLE shared_handle = cl_surf_info->shared_handle;
+ // Check if this ressource has already been used for interop
+ IDirect3DSurface9* pD3D9res = cl_surf_info->resource;
+ HANDLE shared_handle = cl_surf_info->shared_handle;
- if ((adapter_type == CL_ADAPTER_D3D9_KHR) ||
- (adapter_type == CL_ADAPTER_DXVA_KHR)) {
- return CL_INVALID_DX9_MEDIA_ADAPTER_KHR; // Not supported yet
+ if ((adapter_type == CL_ADAPTER_D3D9_KHR) || (adapter_type == CL_ADAPTER_DXVA_KHR)) {
+ return CL_INVALID_DX9_MEDIA_ADAPTER_KHR; // Not supported yet
+ }
+
+ std::vector>::iterator it;
+ for (it = resources_.begin(); it != resources_.end(); ++it) {
+ if ((*it).first.surfInfo.resource == cl_surf_info->resource && (*it).first.surfPlane == plane) {
+ return CL_INVALID_D3D9_RESOURCE_KHR;
}
+ }
+ HRESULT hr;
+ D3DQUERYTYPE desc = D3DQUERYTYPE_EVENT;
+
+ D3DSURFACE_DESC resDesc;
+ if (D3D_OK != pD3D9res->GetDesc(&resDesc)) {
+ return CL_INVALID_D3D9_RESOURCE_KHR;
+ }
+
+ hr = pD3D9res->GetContainer(IID_IDirect3DDevice9Ex, (void**)&pDev9Ex);
+ if (hr == D3D_OK) {
+ pDev9Ex->CreateQuery(desc, &(obj.pQuery_));
+ } else {
+ return CL_INVALID_D3D9_RESOURCE_KHR; // d3d9ex should be supported
+ }
+
+ obj.handleShared_ = shared_handle;
+ obj.surfPlane_ = plane;
+ obj.surfInfo_ = *cl_surf_info;
+ obj.adapterType_ = adapter_type;
+
+ // Init defaults
+ setObjDesc(obj.objDescOrig_, resDesc, plane);
+ obj.objDesc_ = obj.objDescOrig_;
+
+ // shared handle cases if the shared_handle is NULL
+ // first check if the format is NV12 or YV12, which we need special handling
+ if (NULL == shared_handle) {
+ bool found = false;
std::vector>::iterator it;
- for(it = resources_.begin(); it != resources_.end(); ++it) {
- if((*it).first.surfInfo.resource == cl_surf_info->resource && (*it).first.surfPlane == plane) {
- return CL_INVALID_D3D9_RESOURCE_KHR;
- }
- }
-
- HRESULT hr;
- D3DQUERYTYPE desc = D3DQUERYTYPE_EVENT;
-
- D3DSURFACE_DESC resDesc;
- if (D3D_OK != pD3D9res->GetDesc(&resDesc)) {
- return CL_INVALID_D3D9_RESOURCE_KHR;
- }
-
- hr = pD3D9res->GetContainer(IID_IDirect3DDevice9Ex, (void**)&pDev9Ex);
- if (hr == D3D_OK) {
- pDev9Ex->CreateQuery(desc, &(obj.pQuery_));
- }
- else {
- return CL_INVALID_D3D9_RESOURCE_KHR; // d3d9ex should be supported
- }
-
- obj.handleShared_ = shared_handle;
- obj.surfPlane_ = plane;
- obj.surfInfo_ = *cl_surf_info;
- obj.adapterType_ = adapter_type;
-
- // Init defaults
- setObjDesc(obj.objDescOrig_, resDesc, plane);
- obj.objDesc_ = obj.objDescOrig_;
-
- // shared handle cases if the shared_handle is NULL
- // first check if the format is NV12 or YV12, which we need special handling
- if (NULL == shared_handle) {
- bool found = false;
- std::vector>::iterator it;
- for(it = resources_.begin(); it != resources_.end(); ++it) {
- 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();
- obj.objDesc_ = obj.objDescOrig_;
- found = true;
- break;
- }
- }
- if (!found) {
- obj.handleShared_ = 0;
- hr = pDev9Ex->CreateOffscreenPlainSurface(
- resDesc.Width,
- resDesc.Height,
- resDesc.Format,
- resDesc.Pool,
- &obj.pD3D9Res_,
- &obj.handleShared_);
-
- if (D3D_OK != hr) {
- errcode = CL_INVALID_D3D9_RESOURCE_KHR;
- }
- }
-
- // put the original info into the obj
- obj.pD3D9ResOrig_ = pD3D9res;
- obj.pD3D9ResOrig_->AddRef(); //addRef in case lost the resource
- }
- else {
- // Share the original resource
- obj.pD3D9ResOrig_ = NULL;
- obj.pD3D9Res_ = pD3D9res;
+ for (it = resources_.begin(); it != resources_.end(); ++it) {
+ 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();
- }
-
- // Release the Ex interface
- if (pDev9Ex) pDev9Ex->Release();
-
- // Check for CL format compatibilty
- if(obj.objDesc_.resType_ == D3DRTYPE_SURFACE) {
- cl_image_format clFmt =
- obj.getCLFormatFromD3D9(obj.objDesc_.d3dFormat_, plane);
- amd::Image::Format imageFormat(clFmt);
- if(!imageFormat.isSupported(amdContext)) {
- return CL_INVALID_IMAGE_FORMAT_DESCRIPTOR;
- }
- }
-
- TD3D9RESINFO d3d9ObjOri = {*cl_surf_info, plane};
- TD3D9RESINFO d3d9ObjShared = {{obj.pD3D9Res_, obj.handleShared_}, plane};
-
- if (errcode == CL_SUCCESS) {
- resources_.push_back(std::make_pair(d3d9ObjOri, d3d9ObjShared));
- }
-
- return errcode;
-}
-cl_uint
-D3D9Object::getMiscFlag()
-{
- switch (objDescOrig_.d3dFormat_) {
- case D3DFMT_NV_12:
- return 1;
- break;
- case D3DFMT_YV_12:
- return 2;
- break;
- default:
- return 0;
- break;
- }
-}
-
-cl_image_format
-D3D9Object::getCLFormatFromD3D9()
-{
- return getCLFormatFromD3D9(objDesc_.d3dFormat_, surfPlane_);
-}
-
-cl_image_format
-D3D9Object::getCLFormatFromD3D9(D3DFORMAT d3d9Fmt, cl_uint plane)
-{
- cl_image_format fmt;
-
- fmt.image_channel_order = 0;//CL_RGBA;
- fmt.image_channel_data_type = 0;//CL_UNSIGNED_INT8;
-
- switch(d3d9Fmt)
- {
- case D3DFMT_R32F:
- fmt.image_channel_order = CL_R;
- fmt.image_channel_data_type = CL_FLOAT;
+ obj.objDesc_ = obj.objDescOrig_;
+ found = true;
break;
+ }
+ }
+ if (!found) {
+ obj.handleShared_ = 0;
+ hr = pDev9Ex->CreateOffscreenPlainSurface(resDesc.Width, resDesc.Height, resDesc.Format,
+ resDesc.Pool, &obj.pD3D9Res_, &obj.handleShared_);
+
+ if (D3D_OK != hr) {
+ errcode = CL_INVALID_D3D9_RESOURCE_KHR;
+ }
+ }
+
+ // put the original info into the obj
+ obj.pD3D9ResOrig_ = pD3D9res;
+ obj.pD3D9ResOrig_->AddRef(); // addRef in case lost the resource
+ } else {
+ // Share the original resource
+ obj.pD3D9ResOrig_ = NULL;
+ obj.pD3D9Res_ = pD3D9res;
+ obj.pD3D9Res_->AddRef();
+ }
+
+ // Release the Ex interface
+ if (pDev9Ex) pDev9Ex->Release();
+
+ // Check for CL format compatibilty
+ if (obj.objDesc_.resType_ == D3DRTYPE_SURFACE) {
+ cl_image_format clFmt = obj.getCLFormatFromD3D9(obj.objDesc_.d3dFormat_, plane);
+ amd::Image::Format imageFormat(clFmt);
+ if (!imageFormat.isSupported(amdContext)) {
+ return CL_INVALID_IMAGE_FORMAT_DESCRIPTOR;
+ }
+ }
+
+ TD3D9RESINFO d3d9ObjOri = {*cl_surf_info, plane};
+ TD3D9RESINFO d3d9ObjShared = {{obj.pD3D9Res_, obj.handleShared_}, plane};
+
+ if (errcode == CL_SUCCESS) {
+ resources_.push_back(std::make_pair(d3d9ObjOri, d3d9ObjShared));
+ }
+
+ return errcode;
+}
+cl_uint D3D9Object::getMiscFlag() {
+ switch (objDescOrig_.d3dFormat_) {
+ case D3DFMT_NV_12:
+ return 1;
+ break;
+ case D3DFMT_YV_12:
+ return 2;
+ break;
+ default:
+ return 0;
+ break;
+ }
+}
+
+cl_image_format D3D9Object::getCLFormatFromD3D9() {
+ return getCLFormatFromD3D9(objDesc_.d3dFormat_, surfPlane_);
+}
+
+cl_image_format D3D9Object::getCLFormatFromD3D9(D3DFORMAT d3d9Fmt, cl_uint plane) {
+ cl_image_format fmt;
+
+ fmt.image_channel_order = 0; // CL_RGBA;
+ fmt.image_channel_data_type = 0; // CL_UNSIGNED_INT8;
+
+ switch (d3d9Fmt) {
+ case D3DFMT_R32F:
+ fmt.image_channel_order = CL_R;
+ fmt.image_channel_data_type = CL_FLOAT;
+ break;
case D3DFMT_R16F:
- fmt.image_channel_order = CL_R;
- fmt.image_channel_data_type = CL_HALF_FLOAT;
- break;
+ fmt.image_channel_order = CL_R;
+ fmt.image_channel_data_type = CL_HALF_FLOAT;
+ break;
case D3DFMT_L16:
- fmt.image_channel_order = CL_R;
- fmt.image_channel_data_type = CL_UNORM_INT16;
- break;
+ fmt.image_channel_order = CL_R;
+ fmt.image_channel_data_type = CL_UNORM_INT16;
+ break;
case D3DFMT_A8:
- fmt.image_channel_order = CL_A;
- fmt.image_channel_data_type = CL_UNORM_INT8;
- break;
+ fmt.image_channel_order = CL_A;
+ fmt.image_channel_data_type = CL_UNORM_INT8;
+ break;
case D3DFMT_L8:
- fmt.image_channel_order = CL_R;
- fmt.image_channel_data_type = CL_UNORM_INT8;
- break;
+ fmt.image_channel_order = CL_R;
+ fmt.image_channel_data_type = CL_UNORM_INT8;
+ break;
case D3DFMT_G32R32F:
- fmt.image_channel_order = CL_RG;
- fmt.image_channel_data_type = CL_FLOAT;
- break;
+ fmt.image_channel_order = CL_RG;
+ fmt.image_channel_data_type = CL_FLOAT;
+ break;
case D3DFMT_G16R16F:
- fmt.image_channel_order = CL_RG;
- fmt.image_channel_data_type = CL_HALF_FLOAT;
- break;
+ fmt.image_channel_order = CL_RG;
+ fmt.image_channel_data_type = CL_HALF_FLOAT;
+ break;
case D3DFMT_G16R16:
- fmt.image_channel_order = CL_RG;
- fmt.image_channel_data_type = CL_UNORM_INT16;
- break;
+ fmt.image_channel_order = CL_RG;
+ fmt.image_channel_data_type = CL_UNORM_INT16;
+ break;
case D3DFMT_A8L8:
- fmt.image_channel_order = CL_RG;
- fmt.image_channel_data_type = CL_UNORM_INT8;
- break;
+ fmt.image_channel_order = CL_RG;
+ fmt.image_channel_data_type = CL_UNORM_INT8;
+ break;
case D3DFMT_A32B32G32R32F:
- fmt.image_channel_order = CL_RGBA;
- fmt.image_channel_data_type = CL_FLOAT;
- break;
+ fmt.image_channel_order = CL_RGBA;
+ fmt.image_channel_data_type = CL_FLOAT;
+ break;
case D3DFMT_A16B16G16R16F:
- fmt.image_channel_order = CL_RGBA;
- fmt.image_channel_data_type = CL_HALF_FLOAT;
- break;
+ fmt.image_channel_order = CL_RGBA;
+ fmt.image_channel_data_type = CL_HALF_FLOAT;
+ break;
case D3DFMT_A16B16G16R16:
- fmt.image_channel_order = CL_RGBA;
- fmt.image_channel_data_type = CL_UNORM_INT16;
- break;
+ fmt.image_channel_order = CL_RGBA;
+ fmt.image_channel_data_type = CL_UNORM_INT16;
+ break;
case D3DFMT_A8B8G8R8:
- fmt.image_channel_order = CL_RGBA;
- fmt.image_channel_data_type = CL_UNORM_INT8;
- break;
+ fmt.image_channel_order = CL_RGBA;
+ fmt.image_channel_data_type = CL_UNORM_INT8;
+ break;
case D3DFMT_X8B8G8R8:
- fmt.image_channel_order = CL_RGBA;
- fmt.image_channel_data_type = CL_UNORM_INT8;
- break;
+ fmt.image_channel_order = CL_RGBA;
+ fmt.image_channel_data_type = CL_UNORM_INT8;
+ break;
case D3DFMT_A8R8G8B8:
- fmt.image_channel_order = CL_BGRA;
- fmt.image_channel_data_type = CL_UNORM_INT8;
- break;
+ fmt.image_channel_order = CL_BGRA;
+ fmt.image_channel_data_type = CL_UNORM_INT8;
+ break;
case D3DFMT_X8R8G8B8:
- fmt.image_channel_order = CL_BGRA;
- fmt.image_channel_data_type = CL_UNORM_INT8;
- break;
+ fmt.image_channel_order = CL_BGRA;
+ fmt.image_channel_data_type = CL_UNORM_INT8;
+ break;
case D3DFMT_NV_12:
- fmt.image_channel_data_type = CL_UNORM_INT8;
- if (plane == 0) {
- fmt.image_channel_order = CL_R;
- }
- else if(plane == 1) {
- fmt.image_channel_order = CL_RG;
- }
- break;
- case D3DFMT_YV_12:
+ fmt.image_channel_data_type = CL_UNORM_INT8;
+ if (plane == 0) {
fmt.image_channel_order = CL_R;
- fmt.image_channel_data_type = CL_UNORM_INT8;
- break;
+ } else if (plane == 1) {
+ fmt.image_channel_order = CL_RG;
+ }
+ break;
+ case D3DFMT_YV_12:
+ fmt.image_channel_order = CL_R;
+ fmt.image_channel_data_type = CL_UNORM_INT8;
+ break;
case D3DFMT_UNKNOWN:
case D3DFMT_R8G8B8:
@@ -784,153 +723,135 @@ 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
+ _ASSERT(FALSE); // NOT SURPPORTED
+ break;
+ //#endif // !D3D_DISABLE_9EX
default:
- _ASSERT(FALSE);
- break;
- }
+ _ASSERT(FALSE);
+ break;
+ }
- return fmt;
+ return fmt;
}
-bool
-D3D9Object::copyOrigToShared()
-{
- // Don't copy if there is no orig
- if (NULL == getD3D9ResOrig()) return true;
+bool D3D9Object::copyOrigToShared() {
+ // Don't copy if there is no orig
+ if (NULL == getD3D9ResOrig()) return true;
- IDirect3DDevice9Ex *d3dDev;
- HRESULT hr;
- ScopedLock sl(getResLock());
+ IDirect3DDevice9Ex* d3dDev;
+ HRESULT hr;
+ ScopedLock sl(getResLock());
- IDirect3DSurface9* srcSurf = getD3D9ResOrig();
- IDirect3DSurface9* dstSurf = getD3D9Resource();
+ IDirect3DSurface9* srcSurf = getD3D9ResOrig();
+ IDirect3DSurface9* dstSurf = getD3D9Resource();
- hr = getD3D9Resource()->GetContainer(IID_IDirect3DDevice9Ex, (void**)&d3dDev);
- if (hr != D3D_OK || !d3dDev) {
- LogError("\nCannot get D3D9 device from D3D9 surface\n");
- return false;
- }
+ hr = getD3D9Resource()->GetContainer(IID_IDirect3DDevice9Ex, (void**)&d3dDev);
+ if (hr != D3D_OK || !d3dDev) {
+ LogError("\nCannot get D3D9 device from D3D9 surface\n");
+ return false;
+ }
- hr = d3dDev->StretchRect(srcSurf, NULL, dstSurf, NULL, D3DTEXF_NONE);
- if (hr != D3D_OK ) {
- LogError("\ncopy original surface to shared surface failed\n");
- return false;
- }
- // Flush D3D queues and make sure D3D stuff is finished
- pQuery_->Issue(D3DISSUE_END);
- BOOL data;
- while ((D3D_OK != pQuery_->GetData(&data, sizeof(BOOL), D3DGETDATA_FLUSH)) &&
- (data != TRUE)) {
- }
+ hr = d3dDev->StretchRect(srcSurf, NULL, dstSurf, NULL, D3DTEXF_NONE);
+ if (hr != D3D_OK) {
+ LogError("\ncopy original surface to shared surface failed\n");
+ return false;
+ }
+ // Flush D3D queues and make sure D3D stuff is finished
+ pQuery_->Issue(D3DISSUE_END);
+ BOOL data;
+ while ((D3D_OK != pQuery_->GetData(&data, sizeof(BOOL), D3DGETDATA_FLUSH)) && (data != TRUE)) {
+ }
- if (d3dDev) d3dDev->Release();
- return true;
+ if (d3dDev) d3dDev->Release();
+ return true;
}
-bool
-D3D9Object::copySharedToOrig()
-{
- // Don't copy if there is no orig
- if (NULL == getD3D9ResOrig()) return true;
+bool D3D9Object::copySharedToOrig() {
+ // Don't copy if there is no orig
+ if (NULL == getD3D9ResOrig()) return true;
- IDirect3DDevice9Ex *d3dDev;
- HRESULT hr;
- ScopedLock sl(getResLock());
+ IDirect3DDevice9Ex* d3dDev;
+ HRESULT hr;
+ ScopedLock sl(getResLock());
- hr = getD3D9Resource()->GetContainer(IID_IDirect3DDevice9Ex, (void**)&d3dDev);
- if(hr != D3D_OK || !d3dDev) {
- LogError("\nCannot get D3D9 device from D3D9 surface\n");
- return false;
- }
+ hr = getD3D9Resource()->GetContainer(IID_IDirect3DDevice9Ex, (void**)&d3dDev);
+ if (hr != D3D_OK || !d3dDev) {
+ LogError("\nCannot get D3D9 device from D3D9 surface\n");
+ return false;
+ }
- hr = d3dDev->StretchRect(getD3D9Resource(), NULL, getD3D9ResOrig(), NULL, D3DTEXF_NONE);
- if(hr != D3D_OK ) {
- LogError("\ncopy shared surface to original surface failed\n");
- return false;
- }
+ hr = d3dDev->StretchRect(getD3D9Resource(), NULL, getD3D9ResOrig(), NULL, D3DTEXF_NONE);
+ if (hr != D3D_OK) {
+ LogError("\ncopy shared surface to original surface failed\n");
+ return false;
+ }
- if (d3dDev) d3dDev->Release();
- return true;
+ if (d3dDev) d3dDev->Release();
+ return true;
}
-void
-Image2DD3D9::initDeviceMemory()
-{
- deviceMemories_ = reinterpret_cast(
- reinterpret_cast(this) + sizeof(Image2DD3D9));
- memset(deviceMemories_, 0,
- context_().devices().size() * sizeof(DeviceMemory));
+void Image2DD3D9::initDeviceMemory() {
+ deviceMemories_ =
+ reinterpret_cast(reinterpret_cast(this) + sizeof(Image2DD3D9));
+ memset(deviceMemories_, 0, context_().devices().size() * sizeof(DeviceMemory));
}
-bool
-Image2DD3D9::mapExtObjectInCQThread()
-{
- void* pCpuMem = NULL;
- HRESULT hr;
- DWORD lockFlags = 0;
+bool Image2DD3D9::mapExtObjectInCQThread() {
+ void* pCpuMem = NULL;
+ HRESULT hr;
+ DWORD lockFlags = 0;
- if (getMemFlags() & CL_MEM_READ_WRITE) {
- lockFlags = 0;
- }
- else if (getMemFlags() & CL_MEM_READ_ONLY) {
- lockFlags = D3DLOCK_READONLY;
- }
- else if (getMemFlags() & CL_MEM_WRITE_ONLY) {
- lockFlags = D3DLOCK_DISCARD;
- }
- else {
- // Should not get here, the flags had been checked before
- LogError("\nInvalid memrory flags");
- return false;
- }
- ScopedLock sl(getResLock());
+ if (getMemFlags() & CL_MEM_READ_WRITE) {
+ lockFlags = 0;
+ } else if (getMemFlags() & CL_MEM_READ_ONLY) {
+ lockFlags = D3DLOCK_READONLY;
+ } else if (getMemFlags() & CL_MEM_WRITE_ONLY) {
+ lockFlags = D3DLOCK_DISCARD;
+ } else {
+ // Should not get here, the flags had been checked before
+ LogError("\nInvalid memrory flags");
+ return false;
+ }
+ ScopedLock sl(getResLock());
- D3DLOCKED_RECT lockedRect;
- hr = getD3D9Resource()->LockRect(
- &lockedRect,
- NULL,
- lockFlags);
- if ((hr != D3D_OK) || !lockedRect.pBits) {
- LogError("Cannot lock D3D9 surface for CPU access");
- return false;
- }
+ D3DLOCKED_RECT lockedRect;
+ hr = getD3D9Resource()->LockRect(&lockedRect, NULL, lockFlags);
+ if ((hr != D3D_OK) || !lockedRect.pBits) {
+ LogError("Cannot lock D3D9 surface for CPU access");
+ return false;
+ }
- setHostMem(lockedRect.pBits);
- return true;
+ setHostMem(lockedRect.pBits);
+ return true;
}
-bool
-Image2DD3D9::unmapExtObjectInCQThread()
-{
- HRESULT hr;
- ScopedLock sl(getResLock());
- hr = getD3D9Resource()->UnlockRect();
- if (hr != D3D_OK) {
- LogError("Cannot unlock D3D9 surface");
- return false;
- }
+bool Image2DD3D9::unmapExtObjectInCQThread() {
+ HRESULT hr;
+ ScopedLock sl(getResLock());
+ hr = getD3D9Resource()->UnlockRect();
+ if (hr != D3D_OK) {
+ LogError("Cannot unlock D3D9 surface");
+ return false;
+ }
- setHostMem(NULL);
- return true;
+ setHostMem(NULL);
+ return true;
}
-} //namespace amd
+} // namespace amd
-#endif //_WIN32
+#endif //_WIN32
diff --git a/opencl/api/opencl/amdocl/cl_debugger_amd.cpp b/opencl/api/opencl/amdocl/cl_debugger_amd.cpp
index ac6e090a81..9bbe7d584f 100644
--- a/opencl/api/opencl/amdocl/cl_debugger_amd.cpp
+++ b/opencl/api/opencl/amdocl/cl_debugger_amd.cpp
@@ -27,24 +27,21 @@
* - CL_INVALID_DEVICE if the device is not valid
* - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager
*/
-RUNTIME_ENTRY(cl_int, clHwDbgSetCallBackFunctionsAMD, (
- cl_device_id device,
- cl_PreDispatchCallBackFunctionAMD preDispatchFunction,
- cl_PostDispatchCallBackFunctionAMD postDispatchFunction))
-{
- if (!is_valid(device)) {
- return CL_INVALID_DEVICE;
- }
+RUNTIME_ENTRY(cl_int, clHwDbgSetCallBackFunctionsAMD,
+ (cl_device_id device, cl_PreDispatchCallBackFunctionAMD preDispatchFunction,
+ cl_PostDispatchCallBackFunctionAMD postDispatchFunction)) {
+ if (!is_valid(device)) {
+ return CL_INVALID_DEVICE;
+ }
- amd::HwDebugManager * debugManager = as_amd(device)->hwDebugMgr();
- if (NULL == debugManager) {
- return CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD;
- }
+ amd::HwDebugManager* debugManager = as_amd(device)->hwDebugMgr();
+ if (NULL == debugManager) {
+ return CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD;
+ }
- debugManager->setCallBackFunctions(preDispatchFunction,
- postDispatchFunction);
+ debugManager->setCallBackFunctions(preDispatchFunction, postDispatchFunction);
- return CL_SUCCESS;
+ return CL_SUCCESS;
}
RUNTIME_EXIT
@@ -62,23 +59,20 @@ RUNTIME_EXIT
* - CL_INVALID_DEVICE if the device is not valid
* - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager
*/
-RUNTIME_ENTRY(cl_int, clHwDbgSetCallBackArgumentsAMD, (
- cl_device_id device,
- void * preDispatchArgs,
- void * postDispatchArgs))
-{
- if (!is_valid(device)) {
- return CL_INVALID_DEVICE;
- }
+RUNTIME_ENTRY(cl_int, clHwDbgSetCallBackArgumentsAMD,
+ (cl_device_id device, void* preDispatchArgs, void* postDispatchArgs)) {
+ if (!is_valid(device)) {
+ return CL_INVALID_DEVICE;
+ }
- amd::HwDebugManager * debugManager = as_amd(device)->hwDebugMgr();
- if (NULL == debugManager) {
- return CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD;
- }
+ amd::HwDebugManager* debugManager = as_amd(device)->hwDebugMgr();
+ if (NULL == debugManager) {
+ return CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD;
+ }
- debugManager->setCallBackArguments(preDispatchArgs, postDispatchArgs);
+ debugManager->setCallBackArguments(preDispatchArgs, postDispatchArgs);
- return CL_SUCCESS;
+ return CL_SUCCESS;
}
RUNTIME_EXIT
@@ -94,22 +88,19 @@ RUNTIME_EXIT
* - CL_INVALID_DEVICE if the device is not valid
* - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager
*/
-RUNTIME_ENTRY(cl_int, clHwDbgFlushCacheAMD, (
- cl_device_id device,
- cl_dbg_gpu_cache_mask_amd mask))
-{
- if (!is_valid(device)) {
- return CL_INVALID_DEVICE;
- }
+RUNTIME_ENTRY(cl_int, clHwDbgFlushCacheAMD, (cl_device_id device, cl_dbg_gpu_cache_mask_amd mask)) {
+ if (!is_valid(device)) {
+ return CL_INVALID_DEVICE;
+ }
- amd::HwDebugManager * debugManager = as_amd(device)->hwDebugMgr();
- if (NULL == debugManager) {
- return CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD;
- }
+ amd::HwDebugManager* debugManager = as_amd(device)->hwDebugMgr();
+ if (NULL == debugManager) {
+ return CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD;
+ }
- debugManager->flushCache(mask.ui32All);
+ debugManager->flushCache(mask.ui32All);
- return CL_SUCCESS;
+ return CL_SUCCESS;
}
RUNTIME_EXIT
@@ -127,26 +118,24 @@ RUNTIME_EXIT
* - CL_INVALID_VALUE if the policy is not specified (NULL)
* - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager
*/
-RUNTIME_ENTRY(cl_int, clHwDbgSetExceptionPolicyAMD, (
- cl_device_id device,
- cl_dbg_exception_policy_amd * policy))
-{
- if (!is_valid(device)) {
- return CL_INVALID_DEVICE;
- }
+RUNTIME_ENTRY(cl_int, clHwDbgSetExceptionPolicyAMD,
+ (cl_device_id device, cl_dbg_exception_policy_amd* policy)) {
+ if (!is_valid(device)) {
+ return CL_INVALID_DEVICE;
+ }
- if (NULL == policy) {
- return CL_INVALID_VALUE;
- }
+ if (NULL == policy) {
+ return CL_INVALID_VALUE;
+ }
- amd::HwDebugManager * debugManager = as_amd(device)->hwDebugMgr();
- if (NULL == debugManager) {
- return CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD;
- }
+ amd::HwDebugManager* debugManager = as_amd(device)->hwDebugMgr();
+ if (NULL == debugManager) {
+ return CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD;
+ }
- debugManager->setExceptionPolicy(policy);
+ debugManager->setExceptionPolicy(policy);
- return CL_SUCCESS;
+ return CL_SUCCESS;
}
RUNTIME_EXIT
@@ -163,26 +152,24 @@ RUNTIME_EXIT
* - CL_INVALID_VALUE if the policy storage is not specified
* - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager
*/
-RUNTIME_ENTRY(cl_int, clHwDbgGetExceptionPolicyAMD, (
- cl_device_id device,
- cl_dbg_exception_policy_amd * policy))
-{
- if (!is_valid(device)) {
- return CL_INVALID_DEVICE;
- }
+RUNTIME_ENTRY(cl_int, clHwDbgGetExceptionPolicyAMD,
+ (cl_device_id device, cl_dbg_exception_policy_amd* policy)) {
+ if (!is_valid(device)) {
+ return CL_INVALID_DEVICE;
+ }
- if (NULL == policy) {
- return CL_INVALID_VALUE;
- }
+ if (NULL == policy) {
+ return CL_INVALID_VALUE;
+ }
- amd::HwDebugManager * debugManager = as_amd(device)->hwDebugMgr();
- if (NULL == debugManager) {
- return CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD;
- }
+ amd::HwDebugManager* debugManager = as_amd(device)->hwDebugMgr();
+ if (NULL == debugManager) {
+ return CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD;
+ }
- debugManager->getExceptionPolicy(policy);
+ debugManager->getExceptionPolicy(policy);
- return CL_SUCCESS;
+ return CL_SUCCESS;
}
RUNTIME_EXIT
@@ -199,26 +186,24 @@ RUNTIME_EXIT
* - CL_INVALID_VALUE if the mode is not specified, ie, has a NULL value
* - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager
*/
-RUNTIME_ENTRY(cl_int, clHwDbgSetKernelExecutionModeAMD, (
- cl_device_id device,
- cl_dbg_kernel_exec_mode_amd * mode))
-{
- if (!is_valid(device)) {
- return CL_INVALID_DEVICE;
- }
+RUNTIME_ENTRY(cl_int, clHwDbgSetKernelExecutionModeAMD,
+ (cl_device_id device, cl_dbg_kernel_exec_mode_amd* mode)) {
+ if (!is_valid(device)) {
+ return CL_INVALID_DEVICE;
+ }
- if (NULL == mode) {
- return CL_INVALID_VALUE;
- }
+ if (NULL == mode) {
+ return CL_INVALID_VALUE;
+ }
- amd::HwDebugManager * debugManager = as_amd(device)->hwDebugMgr();
- if (NULL == debugManager) {
- return CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD;
- }
+ amd::HwDebugManager* debugManager = as_amd(device)->hwDebugMgr();
+ if (NULL == debugManager) {
+ return CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD;
+ }
- debugManager->setKernelExecutionMode(mode);
+ debugManager->setKernelExecutionMode(mode);
- return CL_SUCCESS;
+ return CL_SUCCESS;
}
RUNTIME_EXIT
@@ -235,26 +220,24 @@ RUNTIME_EXIT
* - CL_INVALID_VALUE if the mode storage is not specified, ie, has a NULL value
* - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager
*/
-RUNTIME_ENTRY(cl_int, clHwDbgGetKernelExecutionModeAMD, (
- cl_device_id device,
- cl_dbg_kernel_exec_mode_amd * mode))
-{
- if (!is_valid(device)) {
- return CL_INVALID_DEVICE;
- }
+RUNTIME_ENTRY(cl_int, clHwDbgGetKernelExecutionModeAMD,
+ (cl_device_id device, cl_dbg_kernel_exec_mode_amd* mode)) {
+ if (!is_valid(device)) {
+ return CL_INVALID_DEVICE;
+ }
- if (NULL == mode) {
- return CL_INVALID_VALUE;
- }
+ if (NULL == mode) {
+ return CL_INVALID_VALUE;
+ }
- amd::HwDebugManager * debugManager = as_amd(device)->hwDebugMgr();
- if (NULL == debugManager) {
- return CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD;
- }
+ amd::HwDebugManager* debugManager = as_amd(device)->hwDebugMgr();
+ if (NULL == debugManager) {
+ return CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD;
+ }
- debugManager->getKernelExecutionMode(mode);
+ debugManager->getKernelExecutionMode(mode);
- return CL_SUCCESS;
+ return CL_SUCCESS;
}
RUNTIME_EXIT
@@ -275,31 +258,26 @@ RUNTIME_EXIT
* - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager
* - CL_OUT_OF_RESOURCES if fails to create the event
*/
-RUNTIME_ENTRY(cl_int, clHwDbgCreateEventAMD, (
- cl_device_id device,
- bool autoReset,
- cl_dbg_event_amd * pDebugEvent,
- cl_uint * pEventId ))
-{
- if (!is_valid(device)) {
- return CL_INVALID_DEVICE;
- }
+RUNTIME_ENTRY(cl_int, clHwDbgCreateEventAMD, (cl_device_id device, bool autoReset,
+ cl_dbg_event_amd* pDebugEvent, cl_uint* pEventId)) {
+ if (!is_valid(device)) {
+ return CL_INVALID_DEVICE;
+ }
- if (NULL == pDebugEvent) {
- return CL_INVALID_VALUE;
- }
+ if (NULL == pDebugEvent) {
+ return CL_INVALID_VALUE;
+ }
- amd::HwDebugManager * debugManager = as_amd(device)->hwDebugMgr();
- if (NULL == debugManager) {
- return CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD;
- }
+ amd::HwDebugManager* debugManager = as_amd(device)->hwDebugMgr();
+ if (NULL == debugManager) {
+ return CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD;
+ }
- // set it to zero for now - not used by OpenCL
- *pEventId = 0;
- *pDebugEvent = debugManager->createDebugEvent(autoReset);
-
- return (NULL == pDebugEvent) ? CL_OUT_OF_RESOURCES : CL_SUCCESS;
+ // set it to zero for now - not used by OpenCL
+ *pEventId = 0;
+ *pDebugEvent = debugManager->createDebugEvent(autoReset);
+ return (NULL == pDebugEvent) ? CL_OUT_OF_RESOURCES : CL_SUCCESS;
}
RUNTIME_EXIT
@@ -320,26 +298,22 @@ RUNTIME_EXIT
* - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager
* - CL_EVENT_TIMEOUT_AMD if timeout occurs
*/
-RUNTIME_ENTRY(cl_int, clHwDbgWaitEventAMD, (
- cl_device_id device,
- cl_dbg_event_amd pDebugEvent,
- cl_uint pEventId,
- cl_uint timeOut))
-{
- if (!is_valid(device)) {
- return CL_INVALID_DEVICE;
- }
+RUNTIME_ENTRY(cl_int, clHwDbgWaitEventAMD, (cl_device_id device, cl_dbg_event_amd pDebugEvent,
+ cl_uint pEventId, cl_uint timeOut)) {
+ if (!is_valid(device)) {
+ return CL_INVALID_DEVICE;
+ }
- if (0 == pDebugEvent) {
- return CL_INVALID_VALUE;
- }
+ if (0 == pDebugEvent) {
+ return CL_INVALID_VALUE;
+ }
- amd::HwDebugManager * debugManager = as_amd(device)->hwDebugMgr();
- if (NULL == debugManager) {
- return CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD;
- }
+ amd::HwDebugManager* debugManager = as_amd(device)->hwDebugMgr();
+ if (NULL == debugManager) {
+ return CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD;
+ }
- return debugManager->waitDebugEvent(pDebugEvent, timeOut);
+ return debugManager->waitDebugEvent(pDebugEvent, timeOut);
}
RUNTIME_EXIT
@@ -357,27 +331,24 @@ RUNTIME_EXIT
* - CL_INVALID_VALUE if the pDebugEvent value is NULL
* - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager
*/
-RUNTIME_ENTRY(cl_int, clHwDbgDestroyEventAMD, (
- cl_device_id device,
- cl_dbg_event_amd * pDebugEvent,
- cl_uint * pEventId ))
-{
- if (!is_valid(device)) {
- return CL_INVALID_DEVICE;
- }
+RUNTIME_ENTRY(cl_int, clHwDbgDestroyEventAMD,
+ (cl_device_id device, cl_dbg_event_amd* pDebugEvent, cl_uint* pEventId)) {
+ if (!is_valid(device)) {
+ return CL_INVALID_DEVICE;
+ }
- if (NULL == pDebugEvent) {
- return CL_INVALID_VALUE;
- }
+ if (NULL == pDebugEvent) {
+ return CL_INVALID_VALUE;
+ }
- amd::HwDebugManager * debugManager = as_amd(device)->hwDebugMgr();
- if (NULL == debugManager) {
- return CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD;
- }
+ amd::HwDebugManager* debugManager = as_amd(device)->hwDebugMgr();
+ if (NULL == debugManager) {
+ return CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD;
+ }
- debugManager->destroyDebugEvent(pDebugEvent);
+ debugManager->destroyDebugEvent(pDebugEvent);
- return CL_SUCCESS;
+ return CL_SUCCESS;
}
RUNTIME_EXIT
@@ -398,29 +369,26 @@ RUNTIME_EXIT
* - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager
* - CL_OUT_OF_RESOURCES if a host queue cannot be created for the debugger
*/
-RUNTIME_ENTRY(cl_int, clHwDbgRegisterDebuggerAMD, (
- cl_context context,
- cl_device_id device,
- volatile void * pMessageStorage))
-{
- if (!is_valid(device)) {
- return CL_INVALID_DEVICE;
- }
+RUNTIME_ENTRY(cl_int, clHwDbgRegisterDebuggerAMD,
+ (cl_context context, cl_device_id device, volatile void* pMessageStorage)) {
+ if (!is_valid(device)) {
+ return CL_INVALID_DEVICE;
+ }
- if (!is_valid(context)) {
- return CL_INVALID_CONTEXT;
- }
+ if (!is_valid(context)) {
+ return CL_INVALID_CONTEXT;
+ }
- if (NULL == pMessageStorage) {
- return CL_INVALID_VALUE;
- }
+ if (NULL == pMessageStorage) {
+ return CL_INVALID_VALUE;
+ }
- if (NULL == as_amd(device)->hwDebugMgr()) {
- return CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD;
- }
+ if (NULL == as_amd(device)->hwDebugMgr()) {
+ return CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD;
+ }
- return as_amd(device)->hwDebugManagerInit(as_amd(context),
- reinterpret_cast(pMessageStorage));
+ return as_amd(device)->hwDebugManagerInit(as_amd(context),
+ reinterpret_cast(pMessageStorage));
}
RUNTIME_EXIT
@@ -434,22 +402,19 @@ RUNTIME_EXIT
* - CL_INVALID_DEVICE if the device is not valid
* - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager
*/
-RUNTIME_ENTRY(cl_int, clHwDbgUnregisterDebuggerAMD, (
- cl_device_id device))
-{
- if (!is_valid(device)) {
- return CL_INVALID_DEVICE;
- }
+RUNTIME_ENTRY(cl_int, clHwDbgUnregisterDebuggerAMD, (cl_device_id device)) {
+ if (!is_valid(device)) {
+ return CL_INVALID_DEVICE;
+ }
- amd::HwDebugManager * debugManager = as_amd(device)->hwDebugMgr();
- if (NULL == debugManager) {
- return CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD;
- }
+ amd::HwDebugManager* debugManager = as_amd(device)->hwDebugMgr();
+ if (NULL == debugManager) {
+ return CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD;
+ }
- debugManager->unregisterDebugger();
-
- return CL_SUCCESS;
+ debugManager->unregisterDebugger();
+ return CL_SUCCESS;
}
RUNTIME_EXIT
@@ -465,27 +430,24 @@ RUNTIME_EXIT
* - CL_INVALID_VALUE if the aclBinary is not provided
* - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager
*/
-RUNTIME_ENTRY(cl_int, clHwDbgSetAclBinaryAMD, (
- cl_device_id device,
- void * aclBinary))
-{
- if (!is_valid(device)) {
- return CL_INVALID_DEVICE;
- }
+RUNTIME_ENTRY(cl_int, clHwDbgSetAclBinaryAMD, (cl_device_id device, void* aclBinary)) {
+ if (!is_valid(device)) {
+ return CL_INVALID_DEVICE;
+ }
- if (NULL == aclBinary) {
- LogWarning("clHwDbgSetAclBinaryAMD: Invalid ACL binary argument.");
- return CL_INVALID_VALUE;
- }
+ if (NULL == aclBinary) {
+ LogWarning("clHwDbgSetAclBinaryAMD: Invalid ACL binary argument.");
+ return CL_INVALID_VALUE;
+ }
- amd::HwDebugManager * debugManager = as_amd(device)->hwDebugMgr();
- if (NULL == debugManager) {
- return CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD;
- }
+ amd::HwDebugManager* debugManager = as_amd(device)->hwDebugMgr();
+ if (NULL == debugManager) {
+ return CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD;
+ }
- debugManager->setAclBinary(aclBinary);
+ debugManager->setAclBinary(aclBinary);
- return CL_SUCCESS;
+ return CL_SUCCESS;
}
RUNTIME_EXIT
@@ -507,40 +469,34 @@ RUNTIME_EXIT
* - CL_INVALID_VALUE if the waveMsg is not provided, invalid action or mode value
* - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager
*/
-RUNTIME_ENTRY(cl_int, clHwDbgWaveControlAMD, (
- cl_device_id device,
- cl_dbg_waves_action_amd action,
- cl_dbg_wave_mode_amd mode,
- cl_uint trapId,
- cl_dbg_wave_addr_amd waveAddress))
-{
+RUNTIME_ENTRY(cl_int, clHwDbgWaveControlAMD,
+ (cl_device_id device, cl_dbg_waves_action_amd action, cl_dbg_wave_mode_amd mode,
+ cl_uint trapId, cl_dbg_wave_addr_amd waveAddress)) {
+ if (!is_valid(device)) {
+ return CL_INVALID_DEVICE;
+ }
- if (!is_valid(device)) {
- return CL_INVALID_DEVICE;
- }
+ // validate the passing arguments
+ //
+ if (action < 0 || action >= CL_DBG_WAVES_MAX) {
+ LogWarning("clHwDbgWaveControlAMD: Invalid wave action argument");
+ return CL_INVALID_VALUE;
+ }
- // validate the passing arguments
- //
- if (action < 0 || action >= CL_DBG_WAVES_MAX) {
- LogWarning("clHwDbgWaveControlAMD: Invalid wave action argument");
- return CL_INVALID_VALUE;
- }
+ if ((mode != CL_DBG_WAVEMODE_SINGLE) && (mode != CL_DBG_WAVEMODE_BROADCAST) &&
+ (mode != CL_DBG_WAVEMODE_BROADCAST_CU)) {
+ LogWarning("clHwDbgWaveControlAMD: Invalid wave mode argument");
+ return CL_INVALID_VALUE;
+ }
- if ((mode != CL_DBG_WAVEMODE_SINGLE)
- && (mode != CL_DBG_WAVEMODE_BROADCAST)
- && (mode != CL_DBG_WAVEMODE_BROADCAST_CU)) {
- LogWarning("clHwDbgWaveControlAMD: Invalid wave mode argument");
- return CL_INVALID_VALUE;
- }
+ amd::HwDebugManager* debugManager = as_amd(device)->hwDebugMgr();
+ if (NULL == debugManager) {
+ return CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD;
+ }
- amd::HwDebugManager * debugManager = as_amd(device)->hwDebugMgr();
- if (NULL == debugManager) {
- return CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD;
- }
+ debugManager->wavefrontControl(action, mode, trapId, (void*)&waveAddress);
- debugManager->wavefrontControl(action, mode, trapId, (void *) &waveAddress);
-
- return CL_SUCCESS;
+ return CL_SUCCESS;
}
RUNTIME_EXIT
@@ -565,51 +521,46 @@ RUNTIME_EXIT
* - CL_INVALID_VALUE if the number of points <= 0, or other parameters is not specified
* - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager
*/
-RUNTIME_ENTRY(cl_int, clHwDbgAddressWatchAMD, (
- cl_device_id device,
- cl_uint numWatchPoints,
- cl_dbg_address_watch_mode_amd * watchMode,
- void ** watchAddress,
- cl_ulong * watchMask,
- cl_dbg_event_amd * watchEvent))
-{
- if (!is_valid(device)) {
- return CL_INVALID_DEVICE;
- }
+RUNTIME_ENTRY(cl_int, clHwDbgAddressWatchAMD,
+ (cl_device_id device, cl_uint numWatchPoints,
+ cl_dbg_address_watch_mode_amd* watchMode, void** watchAddress, cl_ulong* watchMask,
+ cl_dbg_event_amd* watchEvent)) {
+ if (!is_valid(device)) {
+ return CL_INVALID_DEVICE;
+ }
- // validate the passing arguments
- if (numWatchPoints <= 0) {
- LogWarning("clHwDbgAddressWatchAMD: Invalid number of watch points argument");
- return CL_INVALID_VALUE;
- }
+ // validate the passing arguments
+ if (numWatchPoints <= 0) {
+ LogWarning("clHwDbgAddressWatchAMD: Invalid number of watch points argument");
+ return CL_INVALID_VALUE;
+ }
- if (NULL == watchMode) {
- LogWarning("clHwDbgAddressWatchAMD: Watch mode argument");
- return CL_INVALID_VALUE;
- }
+ if (NULL == watchMode) {
+ LogWarning("clHwDbgAddressWatchAMD: Watch mode argument");
+ return CL_INVALID_VALUE;
+ }
- if (NULL == watchAddress) {
- LogWarning("clHwDbgAddressWatchAMD: Watch address argument");
- return CL_INVALID_VALUE;
- }
+ if (NULL == watchAddress) {
+ LogWarning("clHwDbgAddressWatchAMD: Watch address argument");
+ return CL_INVALID_VALUE;
+ }
- if (NULL == watchMask) {
- LogWarning("clHwDbgAddressWatchAMD: Watch mask argument");
- return CL_INVALID_VALUE;
- }
+ if (NULL == watchMask) {
+ LogWarning("clHwDbgAddressWatchAMD: Watch mask argument");
+ return CL_INVALID_VALUE;
+ }
- //TODO: WC - confirm how the watch event is used.
- //
- amd::HwDebugManager * debugManager = as_amd(device)->hwDebugMgr();
- if (NULL == debugManager) {
- return CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD;
- }
+ // TODO: WC - confirm how the watch event is used.
+ //
+ amd::HwDebugManager* debugManager = as_amd(device)->hwDebugMgr();
+ if (NULL == debugManager) {
+ return CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD;
+ }
- debugManager->setAddressWatch(numWatchPoints, watchAddress, watchMask,
- reinterpret_cast(watchMode),
- watchEvent);
+ debugManager->setAddressWatch(numWatchPoints, watchAddress, watchMask,
+ reinterpret_cast(watchMode), watchEvent);
- return CL_SUCCESS;
+ return CL_SUCCESS;
}
RUNTIME_EXIT
@@ -629,23 +580,20 @@ RUNTIME_EXIT
* - CL_INVALID_DEVICE if the device is not valid
* - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager
*/
-RUNTIME_ENTRY(cl_int, clHwDbgGetAqlPacketInfoAMD, (
- cl_device_id device,
- const void * aqlCodeInfo,
- cl_aql_packet_info_amd * packetInfo))
-{
- if (!is_valid(device)) {
- return CL_INVALID_DEVICE;
- }
+RUNTIME_ENTRY(cl_int, clHwDbgGetAqlPacketInfoAMD,
+ (cl_device_id device, const void* aqlCodeInfo, cl_aql_packet_info_amd* packetInfo)) {
+ if (!is_valid(device)) {
+ return CL_INVALID_DEVICE;
+ }
- amd::HwDebugManager * debugManager = as_amd(device)->hwDebugMgr();
- if (NULL == debugManager) {
- return CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD;
- }
+ amd::HwDebugManager* debugManager = as_amd(device)->hwDebugMgr();
+ if (NULL == debugManager) {
+ return CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD;
+ }
- debugManager->getPacketAmdInfo(aqlCodeInfo, packetInfo);
+ debugManager->getPacketAmdInfo(aqlCodeInfo, packetInfo);
- return CL_SUCCESS;
+ return CL_SUCCESS;
}
RUNTIME_EXIT
@@ -661,27 +609,25 @@ RUNTIME_EXIT
* - CL_INVALID_DEVICE if the device is not valid
* - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager
*/
-RUNTIME_ENTRY(cl_int, clHwDbgGetDispatchDebugInfoAMD, (
- cl_device_id device,
- cl_dispatch_debug_info_amd * debugInfo))
-{
- if (!is_valid(device)) {
- return CL_INVALID_DEVICE;
- }
+RUNTIME_ENTRY(cl_int, clHwDbgGetDispatchDebugInfoAMD,
+ (cl_device_id device, cl_dispatch_debug_info_amd* debugInfo)) {
+ if (!is_valid(device)) {
+ return CL_INVALID_DEVICE;
+ }
- if (NULL == debugInfo) {
- LogWarning("clHwDbgGetDispatchDebugInfoAMD: Invalid debug information pointer.");
- return CL_INVALID_VALUE;
- }
+ if (NULL == debugInfo) {
+ LogWarning("clHwDbgGetDispatchDebugInfoAMD: Invalid debug information pointer.");
+ return CL_INVALID_VALUE;
+ }
- amd::HwDebugManager * debugManager = as_amd(device)->hwDebugMgr();
- if (NULL == debugManager) {
- return CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD;
- }
+ amd::HwDebugManager* debugManager = as_amd(device)->hwDebugMgr();
+ if (NULL == debugManager) {
+ return CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD;
+ }
- debugManager->getDispatchDebugInfo((void *) debugInfo);
+ debugManager->getDispatchDebugInfo((void*)debugInfo);
- return CL_SUCCESS;
+ return CL_SUCCESS;
}
RUNTIME_EXIT
@@ -696,22 +642,19 @@ RUNTIME_EXIT
* - CL_INVALID_DEVICE if the device is not valid
* - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager
*/
-RUNTIME_ENTRY(cl_int, clHwDbgMapKernelCodeAMD, (
- cl_device_id device,
- void * aqlCodeInfo))
-{
- if (!is_valid(device)) {
- return CL_INVALID_DEVICE;
- }
+RUNTIME_ENTRY(cl_int, clHwDbgMapKernelCodeAMD, (cl_device_id device, void* aqlCodeInfo)) {
+ if (!is_valid(device)) {
+ return CL_INVALID_DEVICE;
+ }
- amd::HwDebugManager * debugManager = as_amd(device)->hwDebugMgr();
- if (NULL == debugManager) {
- return CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD;
- }
+ amd::HwDebugManager* debugManager = as_amd(device)->hwDebugMgr();
+ if (NULL == debugManager) {
+ return CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD;
+ }
- debugManager->mapKernelCode(aqlCodeInfo);
+ debugManager->mapKernelCode(aqlCodeInfo);
- return CL_SUCCESS;
+ return CL_SUCCESS;
}
RUNTIME_EXIT
@@ -726,24 +669,21 @@ RUNTIME_EXIT
* - CL_INVALID_DEVICE if the device is not valid
* - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager
*/
-RUNTIME_ENTRY(cl_int, clHwDbgUnmapKernelCodeAMD, (
- cl_device_id device,
- cl_ulong * aqlCodeAddress))
-{
- if (!is_valid(device)) {
- return CL_INVALID_DEVICE;
- }
+RUNTIME_ENTRY(cl_int, clHwDbgUnmapKernelCodeAMD, (cl_device_id device, cl_ulong* aqlCodeAddress)) {
+ if (!is_valid(device)) {
+ return CL_INVALID_DEVICE;
+ }
- if (NULL == aqlCodeAddress) {
- LogWarning("clHwDbgUnmapKernelCodeAMD: Invalid AQL code address argument.");
- return CL_INVALID_VALUE;
- }
+ if (NULL == aqlCodeAddress) {
+ LogWarning("clHwDbgUnmapKernelCodeAMD: Invalid AQL code address argument.");
+ return CL_INVALID_VALUE;
+ }
- // Shader buffer is always pinned to host memory so there is no need to unmap the memory.
- // Just set it to 0 to avoid unwanted access
- *aqlCodeAddress = 0;
+ // Shader buffer is always pinned to host memory so there is no need to unmap the memory.
+ // Just set it to 0 to avoid unwanted access
+ *aqlCodeAddress = 0;
- return CL_SUCCESS;
+ return CL_SUCCESS;
}
RUNTIME_EXIT
@@ -751,7 +691,8 @@ RUNTIME_EXIT
*
* \param device specifies the device to be used
*
- * \param scratchRingAddr is the memory points to the returned host memory address for scratch ring
+ * \param scratchRingAddr is the memory points to the returned host memory address for scratch
+ * ring
*
* \param scratchRingSize returns the size of the scratch ring
*
@@ -760,23 +701,20 @@ RUNTIME_EXIT
* - CL_INVALID_DEVICE if the device is not valid
* - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager
*/
-RUNTIME_ENTRY(cl_int, clHwDbgMapScratchRingAMD, (
- cl_device_id device,
- cl_ulong * scratchRingAddr,
- cl_uint * scratchRingSize))
-{
- if (!is_valid(device)) {
- return CL_INVALID_DEVICE;
- }
+RUNTIME_ENTRY(cl_int, clHwDbgMapScratchRingAMD,
+ (cl_device_id device, cl_ulong* scratchRingAddr, cl_uint* scratchRingSize)) {
+ if (!is_valid(device)) {
+ return CL_INVALID_DEVICE;
+ }
- amd::HwDebugManager * debugManager = as_amd(device)->hwDebugMgr();
- if (NULL == debugManager) {
- return CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD;
- }
+ amd::HwDebugManager* debugManager = as_amd(device)->hwDebugMgr();
+ if (NULL == debugManager) {
+ return CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD;
+ }
- debugManager->mapScratchRing(scratchRingAddr, scratchRingSize);
+ debugManager->mapScratchRing(scratchRingAddr, scratchRingSize);
- return CL_SUCCESS;
+ return CL_SUCCESS;
}
RUNTIME_EXIT
@@ -791,24 +729,22 @@ RUNTIME_EXIT
* - CL_INVALID_DEVICE if the device is not valid
* - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager
*/
-RUNTIME_ENTRY(cl_int, clHwDbgUnmapScratchRingAMD, (
- cl_device_id device,
- cl_ulong * scratchRingAddr))
-{
- if (!is_valid(device)) {
- return CL_INVALID_DEVICE;
- }
+RUNTIME_ENTRY(cl_int, clHwDbgUnmapScratchRingAMD,
+ (cl_device_id device, cl_ulong* scratchRingAddr)) {
+ if (!is_valid(device)) {
+ return CL_INVALID_DEVICE;
+ }
- if (NULL == scratchRingAddr) {
- LogWarning("clHwDbgUnmapScratchRingAMD: Invalid scratch ring address argument.");
- return CL_INVALID_VALUE;
- }
+ if (NULL == scratchRingAddr) {
+ LogWarning("clHwDbgUnmapScratchRingAMD: Invalid scratch ring address argument.");
+ return CL_INVALID_VALUE;
+ }
- // Scratch ring buffer is always pinned to host memory so there is no need to unmap the memory.
- // Just set it to NULL to avoid unwanted access
- *scratchRingAddr = 0;
+ // Scratch ring buffer is always pinned to host memory so there is no need to unmap the memory.
+ // Just set it to NULL to avoid unwanted access
+ *scratchRingAddr = 0;
- return CL_SUCCESS;
+ return CL_SUCCESS;
}
RUNTIME_EXIT
@@ -828,35 +764,32 @@ RUNTIME_EXIT
* - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager
* - CL_INVALID_KERNEL_ARGS if it fails to get the memory object for the kernel argument
*/
-RUNTIME_ENTRY(cl_int, clHwDbgGetKernelParamMemAMD, (
- cl_device_id device,
- cl_uint paramIdx,
- cl_mem * paramMem))
-{
- if (!is_valid(device)) {
- return CL_INVALID_DEVICE;
- }
+RUNTIME_ENTRY(cl_int, clHwDbgGetKernelParamMemAMD,
+ (cl_device_id device, cl_uint paramIdx, cl_mem* paramMem)) {
+ if (!is_valid(device)) {
+ return CL_INVALID_DEVICE;
+ }
- amd::Device* amdDevice = as_amd(device);
+ amd::Device* amdDevice = as_amd(device);
- if (paramIdx < 0) {
- LogWarning("clHwDbgGetKernelParamMemAMD: Invalid parameter index argument.");
- return CL_INVALID_VALUE;
- }
+ if (paramIdx < 0) {
+ LogWarning("clHwDbgGetKernelParamMemAMD: Invalid parameter index argument.");
+ return CL_INVALID_VALUE;
+ }
- if (NULL == paramMem) {
- LogWarning("clHwDbgGetKernelParamMemAMD: Invalid parameter member object argument.");
- return CL_INVALID_VALUE;
- }
+ if (NULL == paramMem) {
+ LogWarning("clHwDbgGetKernelParamMemAMD: Invalid parameter member object argument.");
+ return CL_INVALID_VALUE;
+ }
- amd::HwDebugManager * debugManager = amdDevice->hwDebugMgr();
- if (NULL == debugManager) {
- return CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD;
- }
+ amd::HwDebugManager* debugManager = amdDevice->hwDebugMgr();
+ if (NULL == debugManager) {
+ return CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD;
+ }
- *paramMem = debugManager->getKernelParamMem(paramIdx);
+ *paramMem = debugManager->getKernelParamMem(paramIdx);
- return (*paramMem == 0) ? CL_INVALID_KERNEL_ARGS : CL_SUCCESS;
+ return (*paramMem == 0) ? CL_INVALID_KERNEL_ARGS : CL_SUCCESS;
}
RUNTIME_EXIT
@@ -878,31 +811,25 @@ RUNTIME_EXIT
* - CL_INVALID_VALUE if memObj or srcPtr has NULL value, size <= 0 or offset < 0
* - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager
*/
-RUNTIME_ENTRY(cl_int, clHwDbgSetGlobalMemoryAMD, (
- cl_device_id device,
- cl_mem memObject,
- cl_uint offset,
- void * srcMem,
- cl_uint size))
-{
+RUNTIME_ENTRY(cl_int, clHwDbgSetGlobalMemoryAMD,
+ (cl_device_id device, cl_mem memObject, cl_uint offset, void* srcMem, cl_uint size)) {
+ if (!is_valid(device)) {
+ return CL_INVALID_DEVICE;
+ }
- if (!is_valid(device)) {
- return CL_INVALID_DEVICE;
- }
+ amd::HwDebugManager* debugManager = as_amd(device)->hwDebugMgr();
+ if (NULL == debugManager) {
+ return CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD;
+ }
- amd::HwDebugManager * debugManager = as_amd(device)->hwDebugMgr();
- if (NULL == debugManager) {
- return CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD;
- }
+ if (0 > offset || 0 >= size) {
+ return CL_INVALID_VALUE;
+ }
- if (0 > offset || 0 >= size) {
- return CL_INVALID_VALUE;
- }
+ amd::Memory* globalMem = as_amd(memObject);
+ debugManager->setGlobalMemory(globalMem, offset, srcMem, size);
- amd::Memory* globalMem = as_amd(memObject);
- debugManager->setGlobalMemory(globalMem, offset, srcMem, size);
-
- return CL_SUCCESS;
+ return CL_SUCCESS;
}
RUNTIME_EXIT
@@ -922,26 +849,22 @@ RUNTIME_EXIT
* - CL_INVALID_DEVICE if the device is not valid
* - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager
*/
-RUNTIME_ENTRY(cl_int, clHwDbgInstallTrapAMD, (
- cl_device_id device,
- cl_dbg_trap_type_amd trapType,
- cl_mem trapHandler,
- cl_mem trapBuffer))
-{
- if (!is_valid(device)) {
- return CL_INVALID_DEVICE;
- }
+RUNTIME_ENTRY(cl_int, clHwDbgInstallTrapAMD, (cl_device_id device, cl_dbg_trap_type_amd trapType,
+ cl_mem trapHandler, cl_mem trapBuffer)) {
+ if (!is_valid(device)) {
+ return CL_INVALID_DEVICE;
+ }
- amd::HwDebugManager * debugManager = as_amd(device)->hwDebugMgr();
- if (NULL == debugManager) {
- return CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD;
- }
+ amd::HwDebugManager* debugManager = as_amd(device)->hwDebugMgr();
+ if (NULL == debugManager) {
+ return CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD;
+ }
- amd::Memory* pTrapHandler = as_amd(trapHandler);
- amd::Memory* pTrapBuffer = as_amd(trapBuffer);
- debugManager->installTrap(trapType, pTrapHandler, pTrapBuffer);
+ amd::Memory* pTrapHandler = as_amd(trapHandler);
+ amd::Memory* pTrapBuffer = as_amd(trapBuffer);
+ debugManager->installTrap(trapType, pTrapHandler, pTrapBuffer);
- return CL_SUCCESS;
+ return CL_SUCCESS;
}
RUNTIME_EXIT
diff --git a/opencl/api/opencl/amdocl/cl_debugger_amd.h b/opencl/api/opencl/amdocl/cl_debugger_amd.h
index cbbe743b04..c6bbb370a8 100644
--- a/opencl/api/opencl/amdocl/cl_debugger_amd.h
+++ b/opencl/api/opencl/amdocl/cl_debugger_amd.h
@@ -106,22 +106,21 @@ jurisdiction and venue of these courts.
extern "C" {
#endif /*__cplusplus*/
-#define CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD -80
-#define CL_DEBUGGER_REGISTER_FAILURE_AMD -81
-#define CL_TRAP_HANDLER_NOT_DEFINED_AMD -82
-#define CL_EVENT_TIMEOUT_AMD -83
+#define CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD -80
+#define CL_DEBUGGER_REGISTER_FAILURE_AMD -81
+#define CL_TRAP_HANDLER_NOT_DEFINED_AMD -82
+#define CL_EVENT_TIMEOUT_AMD -83
-typedef uintptr_t cl_dbg_event_amd; //! debug event
+typedef uintptr_t cl_dbg_event_amd; //! debug event
/*! \brief Trap Handler Type
*
* The trap handler for each support type.
*/
-enum cl_dbg_trap_type_amd
-{
- CL_DBG_DEBUG_TRAP = 0, //! HW debug
- CL_DBG_MAX_TRAP
+enum cl_dbg_trap_type_amd {
+ CL_DBG_DEBUG_TRAP = 0, //! HW debug
+ CL_DBG_MAX_TRAP
};
/*! \brief Wave actions used to control the wave execution on the hardware
@@ -130,15 +129,14 @@ enum cl_dbg_trap_type_amd
* behavior when calling the wave control function. Overall, there are
* five types of operations that can be specified.
*/
-enum cl_dbg_waves_action_amd
-{
- CL_DBG_WAVES_DONT_USE_ZERO = 0, //! NOT USED
- CL_DBG_WAVES_HALT = 1, //! halt wave
- CL_DBG_WAVES_RESUME = 2, //! resume wave
- CL_DBG_WAVES_KILL = 3, //! kill wave
- CL_DBG_WAVES_DEBUG = 4, //! debug wave
- CL_DBG_WAVES_TRAP = 5, //! trap
- CL_DBG_WAVES_MAX
+enum cl_dbg_waves_action_amd {
+ CL_DBG_WAVES_DONT_USE_ZERO = 0, //! NOT USED
+ CL_DBG_WAVES_HALT = 1, //! halt wave
+ CL_DBG_WAVES_RESUME = 2, //! resume wave
+ CL_DBG_WAVES_KILL = 3, //! kill wave
+ CL_DBG_WAVES_DEBUG = 4, //! debug wave
+ CL_DBG_WAVES_TRAP = 5, //! trap
+ CL_DBG_WAVES_MAX
};
/*! \brief Host actions when encountering an exception in the kernel.
@@ -146,11 +144,10 @@ enum cl_dbg_waves_action_amd
* The host action enumeration is used to specify the desired host
* response in the event thatn a device kernel exception is encountered.
*/
-enum cl_dbg_host_action_amd
-{
- CL_DBG_HOST_IGNORE = 1, //! ignore the kernel exception
- CL_DBG_HOST_EXIT = 2, //! exit the host application on a kernel exception
- CL_DBG_HOST_NOTIFY = 4 //! report the kernel exception
+enum cl_dbg_host_action_amd {
+ CL_DBG_HOST_IGNORE = 1, //! ignore the kernel exception
+ CL_DBG_HOST_EXIT = 2, //! exit the host application on a kernel exception
+ CL_DBG_HOST_NOTIFY = 4 //! report the kernel exception
};
/*! \brief Mode of the wave action when calling the wave control function
@@ -158,25 +155,23 @@ enum cl_dbg_host_action_amd
* The wave mode enumerations are used to specify the desired
* broadcast level when calling the wave control function.
*/
-enum cl_dbg_wave_mode_amd
-{
- CL_DBG_WAVEMODE_SINGLE = 0, //! send command to single wave
- CL_DBG_WAVEMODE_BROADCAST = 2, //! send command to wave with match VMID
- CL_DBG_WAVEMODE_BROADCAST_CU = 3, //! send command to wave with match VMID with specific CU
- CL_DBG_WAVEMODE_MAX
+enum cl_dbg_wave_mode_amd {
+ CL_DBG_WAVEMODE_SINGLE = 0, //! send command to single wave
+ CL_DBG_WAVEMODE_BROADCAST = 2, //! send command to wave with match VMID
+ CL_DBG_WAVEMODE_BROADCAST_CU = 3, //! send command to wave with match VMID with specific CU
+ CL_DBG_WAVEMODE_MAX
};
/*! \brief Enumeration of address watch mode
*
* This enumeration indicates the different modes of address watch.
*/
-enum cl_dbg_address_watch_mode_amd
-{
- CL_DBG_ADDR_WATCH_MODE_READ = 0, //! Read operations only
- CL_DBG_ADDR_WATCH_MODE_NONREAD = 1, //! Write or Atomic operations only
- CL_DBG_ADDR_WATCH_MODE_ATOMIC = 2, //! Atomic Operations only
- CL_DBG_ADDR_WATCH_MODE_ALL = 3, //! Read, Write or Atomic operations
- CL_DBG_ADDR_WATCH_MODE_MAX //! Number of address watch modes
+enum cl_dbg_address_watch_mode_amd {
+ CL_DBG_ADDR_WATCH_MODE_READ = 0, //! Read operations only
+ CL_DBG_ADDR_WATCH_MODE_NONREAD = 1, //! Write or Atomic operations only
+ CL_DBG_ADDR_WATCH_MODE_ATOMIC = 2, //! Atomic Operations only
+ CL_DBG_ADDR_WATCH_MODE_ALL = 3, //! Read, Write or Atomic operations
+ CL_DBG_ADDR_WATCH_MODE_MAX //! Number of address watch modes
};
/*! \brief Dispatch exception policy descriptor
@@ -185,12 +180,11 @@ enum cl_dbg_address_watch_mode_amd
* expected exception policy in the event an exception is encountered
* on the associated dispatch.
*/
-typedef struct _cl_dbg_exception_policy_amd
-{
- cl_uint exceptionMask; //! exception mask
- cl_dbg_waves_action_amd waveAction; //! wave action
- cl_dbg_host_action_amd hostAction; //! host action
- cl_dbg_wave_mode_amd waveMode; //! wave mode
+typedef struct _cl_dbg_exception_policy_amd {
+ cl_uint exceptionMask; //! exception mask
+ cl_dbg_waves_action_amd waveAction; //! wave action
+ cl_dbg_host_action_amd hostAction; //! host action
+ cl_dbg_wave_mode_amd waveMode; //! wave mode
} cl_dbg_exception_policy_amd;
/*! \brief Kernel execution mode
@@ -205,83 +199,78 @@ typedef struct _cl_dbg_exception_policy_amd
* 5. Disable L2 cache (0: enable (default), 1: disable)
* 6. Num of CUs reserved for display (0 (default), 7: max)
*/
-typedef struct _cl_dbg_kernel_exec_mode_amd
-{
- union {
- struct {
- cl_uint monitorMode : 1;
- cl_uint gpuSingleStepMode : 1;
- cl_uint disableL1Scalar : 1;
- cl_uint disableL1Vector : 1;
- cl_uint disableL2Cache : 1;
- cl_uint reservedCuNum : 3;
- cl_uint reserved : 24;
- };
- cl_uint ui32All;
+typedef struct _cl_dbg_kernel_exec_mode_amd {
+ union {
+ struct {
+ cl_uint monitorMode : 1;
+ cl_uint gpuSingleStepMode : 1;
+ cl_uint disableL1Scalar : 1;
+ cl_uint disableL1Vector : 1;
+ cl_uint disableL2Cache : 1;
+ cl_uint reservedCuNum : 3;
+ cl_uint reserved : 24;
};
+ cl_uint ui32All;
+ };
} cl_dbg_kernel_exec_mode_amd;
/*! \brief GPU cache mask
*
* This structure is used to specify the GPU cache to be flushed/invalidated
*/
-typedef struct _cl_dbg_gpu_cache_mask_amd
-{
- union {
- struct {
- cl_uint sqICache : 1; //! instruction cache
- cl_uint sqKCache : 1; //! data cache
- cl_uint tcL1 : 1; //! tcL1 cache
- cl_uint tcL2 : 1; //! tcL2 cache
- cl_uint reserved : 28;
- };
- cl_uint ui32All;
+typedef struct _cl_dbg_gpu_cache_mask_amd {
+ union {
+ struct {
+ cl_uint sqICache : 1; //! instruction cache
+ cl_uint sqKCache : 1; //! data cache
+ cl_uint tcL1 : 1; //! tcL1 cache
+ cl_uint tcL2 : 1; //! tcL2 cache
+ cl_uint reserved : 28;
};
+ cl_uint ui32All;
+ };
} cl_dbg_gpu_cache_mask_amd;
/*! \brief Dispatch Debug Info
*
* This structure is used to store the scratch and global memory descriptors
*/
-typedef struct _cl_dispatch_debug_info_amd
-{
- cl_uint scratchMemoryDescriptor[4]; //! Scratch memory descriptors
- cl_uint globalMemoryDescriptor[4]; //! Global memory descriptors
+typedef struct _cl_dispatch_debug_info_amd {
+ cl_uint scratchMemoryDescriptor[4]; //! Scratch memory descriptors
+ cl_uint globalMemoryDescriptor[4]; //! Global memory descriptors
} cl_dispatch_debug_info_amd;
/*! \brief AQL Packet Info
*
* This structure is used to store AQL packet informatin for kernel dispatch
*/
-typedef struct _cl_aql_packet_info_amd
-{
- cl_uint trapReservedVgprIndex; //! VGPR index reserved for trap
- //! value is -1 when kernel was not compiled
- //! in debug mode.
- cl_uint scratchBufferWaveOffset; //! scratch buffer wave offset
- //! value is -1 when kernel was not compiled
- //! in debug mode or scratch buffer is not enabled
- void *pointerToIsaBuffer; //! Pointer to buffer containing ISA
- size_t sizeOfIsaBuffer; //! Size of the ISA buffer
+typedef struct _cl_aql_packet_info_amd {
+ cl_uint trapReservedVgprIndex; //! VGPR index reserved for trap
+ //! value is -1 when kernel was not compiled
+ //! in debug mode.
+ cl_uint scratchBufferWaveOffset; //! scratch buffer wave offset
+ //! value is -1 when kernel was not compiled
+ //! in debug mode or scratch buffer is not enabled
+ void* pointerToIsaBuffer; //! Pointer to buffer containing ISA
+ size_t sizeOfIsaBuffer; //! Size of the ISA buffer
- cl_uint numberOfVgprs; //! Number of VGPRs used by the kernel
- cl_uint numberOfSgprs; //! Number of SGPRs used by the kernel
- size_t sizeOfStaticGroupMemory; //! Static local memory used by the kernel
+ cl_uint numberOfVgprs; //! Number of VGPRs used by the kernel
+ cl_uint numberOfSgprs; //! Number of SGPRs used by the kernel
+ size_t sizeOfStaticGroupMemory; //! Static local memory used by the kernel
} cl_aql_packet_info_amd;
/*! \brief Wave address
*
* This structure specifies the wave for the SQ control command
*/
-typedef struct _cl_dbg_wave_addr_amd
-{
- cl_uint shaderEngine : 2; //! Shader engine
- cl_uint shaderArray : 1; //! Shader array
- cl_uint computeUnit : 4; //! Compute unit
- cl_uint simd : 2; //! SIMD id
- cl_uint wave : 4; //! Wave id
- cl_uint vmid : 4; //! VMID
- cl_uint reserved : 15;
+typedef struct _cl_dbg_wave_addr_amd {
+ cl_uint shaderEngine : 2; //! Shader engine
+ cl_uint shaderArray : 1; //! Shader array
+ cl_uint computeUnit : 4; //! Compute unit
+ cl_uint simd : 2; //! SIMD id
+ cl_uint wave : 4; //! Wave id
+ cl_uint vmid : 4; //! VMID
+ cl_uint reserved : 15;
} cl_dbg_wave_addr_amd;
@@ -291,11 +280,9 @@ typedef struct _cl_dbg_wave_addr_amd
* dispatch. The call back function is to indicate the start of the
* the kernel launch. It is used by the debugger.
*/
-typedef void * (*cl_PreDispatchCallBackFunctionAMD) ( cl_device_id device,
- void *ocl_event_handle,
- const void *aql_packet,
- void *acl_binary,
- void *user_args);
+typedef void* (*cl_PreDispatchCallBackFunctionAMD)(cl_device_id device, void* ocl_event_handle,
+ const void* aql_packet, void* acl_binary,
+ void* user_args);
/*! \brief Post-dispatch call back function signature
*
@@ -303,9 +290,8 @@ typedef void * (*cl_PreDispatchCallBackFunctionAMD) ( cl_device_id device,
* dispatch. The call back function is to indicate the completion of
* the the kernel launch. It is used by the debugger.
*/
-typedef void * (*cl_PostDispatchCallBackFunctionAMD) ( cl_device_id device,
- cl_ulong event,
- void *user_args);
+typedef void* (*cl_PostDispatchCallBackFunctionAMD)(cl_device_id device, cl_ulong event,
+ void* user_args);
/*! \brief Set up the dispatch call back function pointers
*
@@ -321,10 +307,9 @@ typedef void * (*cl_PostDispatchCallBackFunctionAMD) ( cl_device_id device,
* - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager
*/
extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgSetCallBackFunctionsAMD(
- cl_device_id /* device */,
- cl_PreDispatchCallBackFunctionAMD /* preDispatchFunction */,
- cl_PostDispatchCallBackFunctionAMD /* postDispatchFunction */
-) CL_API_SUFFIX__VERSION_2_0;
+ cl_device_id /* device */, cl_PreDispatchCallBackFunctionAMD /* preDispatchFunction */,
+ cl_PostDispatchCallBackFunctionAMD /* postDispatchFunction */
+ ) CL_API_SUFFIX__VERSION_2_0;
/*! \brief Set up the arguments of the dispatch call back function
@@ -340,11 +325,10 @@ extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgSetCallBackFunctionsAMD(
* - CL_INVALID_DEVICE if the device is not valid
* - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager
*/
-extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgSetCallBackArgumentsAMD(
- cl_device_id /* device */,
- void * /* preDispatchArgs */,
- void * /* postDispatchArgs */
-) CL_API_SUFFIX__VERSION_2_0;
+extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgSetCallBackArgumentsAMD(cl_device_id /* device */,
+ void* /* preDispatchArgs */,
+ void* /* postDispatchArgs */
+ ) CL_API_SUFFIX__VERSION_2_0;
/*! \brief Invalidate all cache on the device.
@@ -358,10 +342,9 @@ extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgSetCallBackArgumentsAMD(
* - CL_INVALID_DEVICE if the device is not valid
* - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager
*/
-extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgFlushCacheAMD(
- cl_device_id /* device */,
- cl_dbg_gpu_cache_mask_amd /* mask */
-) CL_API_SUFFIX__VERSION_2_0;
+extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgFlushCacheAMD(cl_device_id /* device */,
+ cl_dbg_gpu_cache_mask_amd /* mask */
+ ) CL_API_SUFFIX__VERSION_2_0;
/*! \brief Set up an exception policy in the trap handler object
@@ -378,9 +361,8 @@ extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgFlushCacheAMD(
* - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager
*/
extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgSetExceptionPolicyAMD(
- cl_device_id /* device */,
- cl_dbg_exception_policy_amd * /* policy */
-) CL_API_SUFFIX__VERSION_2_0;
+ cl_device_id /* device */, cl_dbg_exception_policy_amd* /* policy */
+ ) CL_API_SUFFIX__VERSION_2_0;
/*! \brief Get the exception policy in the trap handler object
*
@@ -395,9 +377,8 @@ extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgSetExceptionPolicyAMD(
* - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager
*/
extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgGetExceptionPolicyAMD(
- cl_device_id /* device */,
- cl_dbg_exception_policy_amd * /* policy */
-) CL_API_SUFFIX__VERSION_2_0;
+ cl_device_id /* device */, cl_dbg_exception_policy_amd* /* policy */
+ ) CL_API_SUFFIX__VERSION_2_0;
/*! \brief Set up the kernel execution mode in the trap handler object
*
@@ -413,9 +394,8 @@ extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgGetExceptionPolicyAMD(
* - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager
*/
extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgSetKernelExecutionModeAMD(
- cl_device_id /* device */,
- cl_dbg_kernel_exec_mode_amd * /* mode */
-) CL_API_SUFFIX__VERSION_2_0;
+ cl_device_id /* device */, cl_dbg_kernel_exec_mode_amd* /* mode */
+ ) CL_API_SUFFIX__VERSION_2_0;
/*! \brief Get the kernel execution mode in the trap handler object
@@ -431,9 +411,8 @@ extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgSetKernelExecutionModeAMD(
* - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager
*/
extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgGetKernelExecutionModeAMD(
- cl_device_id /* device */,
- cl_dbg_kernel_exec_mode_amd * /* mode */
-) CL_API_SUFFIX__VERSION_2_0;
+ cl_device_id /* device */, cl_dbg_kernel_exec_mode_amd* /* mode */
+ ) CL_API_SUFFIX__VERSION_2_0;
/*! \brief Create a debug event
@@ -453,12 +432,11 @@ extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgGetKernelExecutionModeAMD(
* - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager
* - CL_OUT_OF_RESOURCES if fails to create the event
*/
-extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgCreateEventAMD(
- cl_device_id /* device */,
- bool /* autoReset */,
- cl_dbg_event_amd * /* pDebugEvent */,
- cl_uint * /* pEventId */
-) CL_API_SUFFIX__VERSION_2_0;
+extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgCreateEventAMD(cl_device_id /* device */,
+ bool /* autoReset */,
+ cl_dbg_event_amd* /* pDebugEvent */,
+ cl_uint* /* pEventId */
+ ) CL_API_SUFFIX__VERSION_2_0;
/*! \brief Wait for a debug event to be signaled
*
@@ -477,12 +455,11 @@ extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgCreateEventAMD(
* - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager
* - CL_EVENT_TIMEOUT_AMD if timeout occurs
*/
-extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgWaitEventAMD(
- cl_device_id /* device */,
- cl_dbg_event_amd /* pDebugEvent */,
- cl_uint /* pEventId */,
- cl_uint /* timeOut */
-) CL_API_SUFFIX__VERSION_2_0;
+extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgWaitEventAMD(cl_device_id /* device */,
+ cl_dbg_event_amd /* pDebugEvent */,
+ cl_uint /* pEventId */,
+ cl_uint /* timeOut */
+ ) CL_API_SUFFIX__VERSION_2_0;
/*! \brief Destroy a debug event
*
@@ -498,11 +475,10 @@ extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgWaitEventAMD(
* - CL_INVALID_VALUE if the pDebugEvent value is NULL
* - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager
*/
-extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgDestroyEventAMD(
- cl_device_id /* device */,
- cl_dbg_event_amd * /* pDebugEvent */,
- cl_uint * /* pEventId */
-) CL_API_SUFFIX__VERSION_2_0;
+extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgDestroyEventAMD(cl_device_id /* device */,
+ cl_dbg_event_amd* /* pDebugEvent */,
+ cl_uint* /* pEventId */
+ ) CL_API_SUFFIX__VERSION_2_0;
/*! \brief Register the debugger on a device
@@ -522,10 +498,8 @@ extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgDestroyEventAMD(
* - CL_OUT_OF_RESOURCES if a host queue cannot be created for the debugger
*/
extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgRegisterDebuggerAMD(
- cl_context /* context */,
- cl_device_id /* device */,
- volatile void * /* pMessageStorage */
-) CL_API_SUFFIX__VERSION_2_0;
+ cl_context /* context */, cl_device_id /* device */, volatile void* /* pMessageStorage */
+ ) CL_API_SUFFIX__VERSION_2_0;
/*! \brief Unregister the debugger on a device
@@ -537,9 +511,8 @@ extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgRegisterDebuggerAMD(
* - CL_INVALID_DEVICE if the device is not valid
* - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager
*/
-extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgUnregisterDebuggerAMD(
- cl_device_id /* device */
-) CL_API_SUFFIX__VERSION_2_0;
+extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgUnregisterDebuggerAMD(cl_device_id /* device */
+ ) CL_API_SUFFIX__VERSION_2_0;
/*! \brief Setup the pointer of the acl_binary to be used by the debugger
*
@@ -553,10 +526,9 @@ extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgUnregisterDebuggerAMD(
* - CL_INVALID_VALUE if the aclBinary is not provided
* - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager
*/
-extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgSetAclBinaryAMD(
- cl_device_id /* device */,
- void * /* aclBinary */
-) CL_API_SUFFIX__VERSION_2_0;
+extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgSetAclBinaryAMD(cl_device_id /* device */,
+ void* /* aclBinary */
+ ) CL_API_SUFFIX__VERSION_2_0;
/*! \brief Control the execution of wavefront on the GPU
@@ -577,13 +549,12 @@ extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgSetAclBinaryAMD(
* - CL_INVALID_VALUE if the waveMsg is not provided, invalid action or mode value
* - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager
*/
-extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgWaveControlAMD(
- cl_device_id /* device */,
- cl_dbg_waves_action_amd /* action */,
- cl_dbg_wave_mode_amd /* mode */,
- cl_uint /* trapId */,
- cl_dbg_wave_addr_amd /* waveAddress */
-) CL_API_SUFFIX__VERSION_2_0;
+extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgWaveControlAMD(cl_device_id /* device */,
+ cl_dbg_waves_action_amd /* action */,
+ cl_dbg_wave_mode_amd /* mode */,
+ cl_uint /* trapId */,
+ cl_dbg_wave_addr_amd /* waveAddress */
+ ) CL_API_SUFFIX__VERSION_2_0;
/*! \brief Set watch points on memory address ranges to generate exception events
*
@@ -606,13 +577,10 @@ extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgWaveControlAMD(
* - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager
*/
extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgAddressWatchAMD(
- cl_device_id /* device */,
- cl_uint /* numWatchPoints */,
- cl_dbg_address_watch_mode_amd * /* watchMode */,
- void ** /* watchAddress */,
- cl_ulong * /* watchMask */,
- cl_dbg_event_amd * /* watchEvent */
-) CL_API_SUFFIX__VERSION_2_0;
+ cl_device_id /* device */, cl_uint /* numWatchPoints */,
+ cl_dbg_address_watch_mode_amd* /* watchMode */, void** /* watchAddress */,
+ cl_ulong* /* watchMask */, cl_dbg_event_amd* /* watchEvent */
+ ) CL_API_SUFFIX__VERSION_2_0;
/*! \brief Get the packaet information for kernel execution
*
@@ -628,10 +596,9 @@ extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgAddressWatchAMD(
* - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager
*/
extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgGetAqlPacketInfoAMD(
- cl_device_id /* device */,
- const void * /* aqlCodeInfo */,
- cl_aql_packet_info_amd * /* packetInfo */
-) CL_API_SUFFIX__VERSION_2_0;
+ cl_device_id /* device */, const void* /* aqlCodeInfo */,
+ cl_aql_packet_info_amd* /* packetInfo */
+ ) CL_API_SUFFIX__VERSION_2_0;
/*! \brief Get the dispatch debug information
@@ -646,16 +613,16 @@ extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgGetAqlPacketInfoAMD(
* - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager
*/
extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgGetDispatchDebugInfoAMD(
- cl_device_id /* device */,
- cl_dispatch_debug_info_amd * /* debugInfo */
-) CL_API_SUFFIX__VERSION_2_0;
+ cl_device_id /* device */, cl_dispatch_debug_info_amd* /* debugInfo */
+ ) CL_API_SUFFIX__VERSION_2_0;
/*! \brief Map the video memory for the kernel code to allow host access
*
* \param device specifies the device to be used
*
- * \param aqlCodeAddress is the memory points to the returned host memory address for the kernel code
+ * \param aqlCodeAddress is the memory points to the returned host memory address for the kernel
+ * code
*
* \param aqlCodeSize returns the size of the kernel code
*
@@ -664,10 +631,9 @@ extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgGetDispatchDebugInfoAMD(
* - CL_INVALID_DEVICE if the device is not valid
* - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager
*/
-extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgMapKernelCodeAMD(
- cl_device_id /* device */,
- void * /* aqlCodeInfo */
-) CL_API_SUFFIX__VERSION_2_0;
+extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgMapKernelCodeAMD(cl_device_id /* device */,
+ void* /* aqlCodeInfo */
+ ) CL_API_SUFFIX__VERSION_2_0;
/*! \brief Unmap the video memory for the kernel code
@@ -681,17 +647,17 @@ extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgMapKernelCodeAMD(
* - CL_INVALID_DEVICE if the device is not valid
* - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager
*/
-extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgUnmapKernelCodeAMD(
- cl_device_id /* device */,
- cl_ulong * /* aqlCodeAddress */
-) CL_API_SUFFIX__VERSION_2_0;
+extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgUnmapKernelCodeAMD(cl_device_id /* device */,
+ cl_ulong* /* aqlCodeAddress */
+ ) CL_API_SUFFIX__VERSION_2_0;
/*! \brief Map the shader scratch ring's video memory to allow CPU access
*
* \param device specifies the device to be used
*
- * \param scratchRingAddr is the memory points to the returned host memory address for scratch ring
+ * \param scratchRingAddr is the memory points to the returned host memory address for scratch
+ * ring
*
* \param scratchRingSize returns the size of the scratch ring
*
@@ -700,11 +666,10 @@ extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgUnmapKernelCodeAMD(
* - CL_INVALID_DEVICE if the device is not valid
* - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager
*/
-extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgMapScratchRingAMD(
- cl_device_id /* device */,
- cl_ulong * /* scratchRingAddr */,
- cl_uint * /* scratchRingSize */
-) CL_API_SUFFIX__VERSION_2_0;
+extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgMapScratchRingAMD(cl_device_id /* device */,
+ cl_ulong* /* scratchRingAddr */,
+ cl_uint* /* scratchRingSize */
+ ) CL_API_SUFFIX__VERSION_2_0;
/*! \brief Unmap the shader scratch ring's video memory
*
@@ -717,10 +682,9 @@ extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgMapScratchRingAMD(
* - CL_INVALID_DEVICE if the device is not valid
* - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager
*/
-extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgUnmapScratchRingAMD(
- cl_device_id /* device */,
- cl_ulong * /* scratchRingAddr */
-) CL_API_SUFFIX__VERSION_2_0;
+extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgUnmapScratchRingAMD(cl_device_id /* device */,
+ cl_ulong* /* scratchRingAddr */
+ ) CL_API_SUFFIX__VERSION_2_0;
/*! \brief Get the memory object associated with the kernel parameter
*
@@ -737,11 +701,10 @@ extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgUnmapScratchRingAMD(
* - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager
* - CL_INVALID_KERNEL_ARGS if it fails to get the memory object for the kernel argument
*/
-extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgGetKernelParamMemAMD(
- cl_device_id /* devicepointer */,
- cl_uint /* paramIdx */,
- cl_mem * /* paramMem */
-) CL_API_SUFFIX__VERSION_2_0;
+extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgGetKernelParamMemAMD(cl_device_id /* devicepointer */,
+ cl_uint /* paramIdx */,
+ cl_mem* /* paramMem */
+ ) CL_API_SUFFIX__VERSION_2_0;
/*! \brief Set value of a global memory object
*
@@ -761,13 +724,12 @@ extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgGetKernelParamMemAMD(
* - CL_INVALID_VALUE if memObj or srcPtr has NULL value, size <= 0 or offset < 0
* - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager
*/
-extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgSetGlobalMemoryAMD(
- cl_device_id /* device */,
- cl_mem /* memObject */,
- cl_uint /* offset */,
- void * /* srcMem */,
- cl_uint /* size */
-) CL_API_SUFFIX__VERSION_2_0;
+extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgSetGlobalMemoryAMD(cl_device_id /* device */,
+ cl_mem /* memObject */,
+ cl_uint /* offset */,
+ void* /* srcMem */,
+ cl_uint /* size */
+ ) CL_API_SUFFIX__VERSION_2_0;
/*! \brief Install the trap handler of a given type
@@ -790,17 +752,15 @@ extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgSetGlobalMemoryAMD(
* - CL_INVALID_VALUE if trapHandler is NULL or trapHandlerSize <= 0
* - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager
*/
-extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgInstallTrapAMD(
- cl_device_id /* device */,
- cl_dbg_trap_type_amd /* trapType */,
- cl_mem /* trapHandler */,
- cl_mem /* trapBuffer */
-) CL_API_SUFFIX__VERSION_2_0;
-
+extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgInstallTrapAMD(cl_device_id /* device */,
+ cl_dbg_trap_type_amd /* trapType */,
+ cl_mem /* trapHandler */,
+ cl_mem /* trapBuffer */
+ ) CL_API_SUFFIX__VERSION_2_0;
#ifdef __cplusplus
} /*extern "C"*/
#endif /*__cplusplus*/
-#endif /*__CL_DEBUGGER_AMD_H*/
+#endif /*__CL_DEBUGGER_AMD_H*/
diff --git a/opencl/api/opencl/amdocl/cl_device.cpp b/opencl/api/opencl/amdocl/cl_device.cpp
index f8cee2e775..fe01c15661 100644
--- a/opencl/api/opencl/amdocl/cl_device.cpp
+++ b/opencl/api/opencl/amdocl/cl_device.cpp
@@ -11,7 +11,7 @@
#include "CL/cl_ext.h"
-#include // for alloca
+#include // for alloca
/*! \addtogroup API
* @{
@@ -42,29 +42,26 @@
* \version 1.0r33
*/
-RUNTIME_ENTRY(cl_int, clGetPlatformIDs, (
- cl_uint num_entries,
- cl_platform_id *platforms,
- cl_uint *num_platforms))
-{
- if (!amd::Runtime::initialized()) {
- amd::Runtime::init();
- }
+RUNTIME_ENTRY(cl_int, clGetPlatformIDs,
+ (cl_uint num_entries, cl_platform_id* platforms, cl_uint* num_platforms)) {
+ if (!amd::Runtime::initialized()) {
+ amd::Runtime::init();
+ }
- if (((num_entries > 0 || num_platforms == NULL) && platforms == NULL)
- || (num_entries == 0 && platforms != NULL)) {
- return CL_INVALID_VALUE;
- }
- if (num_platforms != NULL && platforms == NULL) {
- *num_platforms = 1;
- return CL_SUCCESS;
- }
+ if (((num_entries > 0 || num_platforms == NULL) && platforms == NULL) ||
+ (num_entries == 0 && platforms != NULL)) {
+ return CL_INVALID_VALUE;
+ }
+ if (num_platforms != NULL && platforms == NULL) {
+ *num_platforms = 1;
+ return CL_SUCCESS;
+ }
- assert(platforms != NULL && "check the code above");
- *platforms = AMD_PLATFORM;
+ assert(platforms != NULL && "check the code above");
+ *platforms = AMD_PLATFORM;
- *not_null(num_platforms) = 1;
- return CL_SUCCESS;
+ *not_null(num_platforms) = 1;
+ return CL_SUCCESS;
}
RUNTIME_EXIT
@@ -91,58 +88,51 @@ RUNTIME_EXIT
*
* \version 1.0r33
*/
-RUNTIME_ENTRY(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))
-{
- if (platform != NULL && platform != AMD_PLATFORM) {
- return CL_INVALID_PLATFORM;
- }
+RUNTIME_ENTRY(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)) {
+ if (platform != NULL && platform != AMD_PLATFORM) {
+ return CL_INVALID_PLATFORM;
+ }
- const char* value = NULL;
- switch (param_name) {
+ const char* value = NULL;
+ switch (param_name) {
case CL_PLATFORM_PROFILE:
- value = "FULL_PROFILE";
- break;
+ value = "FULL_PROFILE";
+ break;
case CL_PLATFORM_VERSION:
- value = "OpenCL " XSTR(OPENCL_MAJOR) "." XSTR(OPENCL_MINOR) \
- " " AMD_PLATFORM_INFO;
- break;
+ value = "OpenCL " XSTR(OPENCL_MAJOR) "." XSTR(OPENCL_MINOR) " " AMD_PLATFORM_INFO;
+ break;
case CL_PLATFORM_NAME:
- value = AMD_PLATFORM_NAME;
- break;
+ value = AMD_PLATFORM_NAME;
+ break;
case CL_PLATFORM_VENDOR:
- value = "Advanced Micro Devices, Inc.";
- break;
+ value = "Advanced Micro Devices, Inc.";
+ break;
case CL_PLATFORM_EXTENSIONS:
- value = "cl_khr_icd " NOT_MAINLINE("cl_amd_object_metadata ")
+ value = "cl_khr_icd " NOT_MAINLINE("cl_amd_object_metadata ")
#ifdef _WIN32
- "cl_khr_d3d10_sharing "
- "cl_khr_d3d11_sharing "
- "cl_khr_dx9_media_sharing "
-#endif //_WIN32
- "cl_amd_event_callback cl_amd_offline_devices ";
- break;
+ "cl_khr_d3d10_sharing "
+ "cl_khr_d3d11_sharing "
+ "cl_khr_dx9_media_sharing "
+#endif //_WIN32
+ "cl_amd_event_callback cl_amd_offline_devices ";
+ break;
case CL_PLATFORM_ICD_SUFFIX_KHR:
- value = "AMD";
- break;
+ value = "AMD";
+ break;
case CL_PLATFORM_MAX_KEYS_AMD: {
- size_t max_keys = OCL_MAX_KEYS;
- return amd::clGetInfo(
- max_keys, param_value_size, param_value, param_value_size_ret);
+ size_t max_keys = OCL_MAX_KEYS;
+ return amd::clGetInfo(max_keys, param_value_size, param_value, param_value_size_ret);
}
default:
- break;
- }
- if (value != NULL) {
- return amd::clGetInfo(
- value, param_value_size, param_value, param_value_size_ret);
- }
+ break;
+ }
+ if (value != NULL) {
+ return amd::clGetInfo(value, param_value_size, param_value, param_value_size_ret);
+ }
- return CL_INVALID_VALUE;
+ return CL_INVALID_VALUE;
}
RUNTIME_EXIT
@@ -184,29 +174,24 @@ RUNTIME_EXIT
*
* \version 1.0r33
*/
-RUNTIME_ENTRY(cl_int, clGetDeviceIDs, (
- cl_platform_id platform,
- cl_device_type device_type,
- cl_uint num_entries,
- cl_device_id *devices,
- cl_uint *num_devices))
-{
- if (platform != NULL && platform != AMD_PLATFORM) {
- return CL_INVALID_PLATFORM;
- }
+RUNTIME_ENTRY(cl_int, clGetDeviceIDs,
+ (cl_platform_id platform, cl_device_type device_type, cl_uint num_entries,
+ cl_device_id* devices, cl_uint* num_devices)) {
+ if (platform != NULL && platform != AMD_PLATFORM) {
+ return CL_INVALID_PLATFORM;
+ }
- if (((num_entries > 0 || num_devices == NULL) && devices == NULL)
- || (num_entries == 0 && devices != NULL)) {
- return CL_INVALID_VALUE;
- }
+ if (((num_entries > 0 || num_devices == NULL) && devices == NULL) ||
+ (num_entries == 0 && devices != NULL)) {
+ return CL_INVALID_VALUE;
+ }
- // Get all available devices
- if (!amd::Device::getDeviceIDs(device_type, num_entries,
- devices, num_devices, false)) {
- return CL_DEVICE_NOT_FOUND;
- }
+ // Get all available devices
+ if (!amd::Device::getDeviceIDs(device_type, num_entries, devices, num_devices, false)) {
+ return CL_DEVICE_NOT_FOUND;
+ }
- return CL_SUCCESS;
+ return CL_SUCCESS;
}
RUNTIME_EXIT
@@ -238,353 +223,317 @@ RUNTIME_EXIT
*
* \version 1.0r33
*/
-RUNTIME_ENTRY(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))
-{
- if (!is_valid(device)) {
- return CL_INVALID_DEVICE;
- }
+RUNTIME_ENTRY(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)) {
+ if (!is_valid(device)) {
+ return CL_INVALID_DEVICE;
+ }
-#define CASE(param_name, field_name) \
- case param_name: \
- return amd::clGetInfo( \
- as_amd(device)->info().field_name, \
- param_value_size, \
- param_value, \
- param_value_size_ret);
+#define CASE(param_name, field_name) \
+ case param_name: \
+ return amd::clGetInfo(as_amd(device)->info().field_name, param_value_size, param_value, \
+ param_value_size_ret);
- switch (param_name) {
+ switch (param_name) {
case CL_DEVICE_TYPE: {
- // For cl_device_type, we need to mask out the default bit.
- cl_device_type device_type = as_amd(device)->type();
- return amd::clGetInfo(
- device_type, param_value_size, param_value, param_value_size_ret);
+ // For cl_device_type, we need to mask out the default bit.
+ cl_device_type device_type = as_amd(device)->type();
+ return amd::clGetInfo(device_type, param_value_size, param_value, param_value_size_ret);
}
- CASE(CL_DEVICE_VENDOR_ID, vendorId_);
- CASE(CL_DEVICE_MAX_COMPUTE_UNITS, maxComputeUnits_);
- CASE(CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS, maxWorkItemDimensions_);
- CASE(CL_DEVICE_MAX_WORK_GROUP_SIZE, maxWorkGroupSize_);
- CASE(CL_DEVICE_MAX_WORK_ITEM_SIZES, maxWorkItemSizes_);
- CASE(CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR, preferredVectorWidthChar_);
- CASE(CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT, preferredVectorWidthShort_);
- CASE(CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT, preferredVectorWidthInt_);
- CASE(CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG, preferredVectorWidthLong_);
- CASE(CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT, preferredVectorWidthFloat_);
- CASE(CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE, preferredVectorWidthDouble_);
- CASE(CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF, preferredVectorWidthDouble_);
- CASE(CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR, nativeVectorWidthChar_);
- CASE(CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT, nativeVectorWidthShort_);
- CASE(CL_DEVICE_NATIVE_VECTOR_WIDTH_INT, nativeVectorWidthInt_);
- CASE(CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG, nativeVectorWidthLong_);
- CASE(CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT, nativeVectorWidthFloat_);
- CASE(CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE, nativeVectorWidthDouble_);
- CASE(CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF, nativeVectorWidthDouble_);
- CASE(CL_DEVICE_MAX_CLOCK_FREQUENCY, maxClockFrequency_);
- CASE(CL_DEVICE_ADDRESS_BITS, addressBits_);
- CASE(CL_DEVICE_MAX_READ_IMAGE_ARGS, maxReadImageArgs_);
- CASE(CL_DEVICE_MAX_WRITE_IMAGE_ARGS, maxWriteImageArgs_);
- CASE(CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS, maxReadWriteImageArgs_);
- CASE(CL_DEVICE_MAX_MEM_ALLOC_SIZE, maxMemAllocSize_);
- CASE(CL_DEVICE_IMAGE2D_MAX_WIDTH, image2DMaxWidth_);
- CASE(CL_DEVICE_IMAGE2D_MAX_HEIGHT, image2DMaxHeight_);
- CASE(CL_DEVICE_IMAGE3D_MAX_WIDTH, image3DMaxWidth_);
- CASE(CL_DEVICE_IMAGE3D_MAX_HEIGHT, image3DMaxHeight_);
- CASE(CL_DEVICE_IMAGE3D_MAX_DEPTH, image3DMaxDepth_);
- CASE(CL_DEVICE_IMAGE_SUPPORT, imageSupport_);
- CASE(CL_DEVICE_MAX_PARAMETER_SIZE, maxParameterSize_);
- CASE(CL_DEVICE_MAX_SAMPLERS, maxSamplers_);
- CASE(CL_DEVICE_MEM_BASE_ADDR_ALIGN, memBaseAddrAlign_);
- CASE(CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE, minDataTypeAlignSize_);
- CASE(CL_DEVICE_HALF_FP_CONFIG, halfFPConfig_);
- CASE(CL_DEVICE_SINGLE_FP_CONFIG, singleFPConfig_);
- CASE(CL_DEVICE_DOUBLE_FP_CONFIG, doubleFPConfig_);
- CASE(CL_DEVICE_GLOBAL_MEM_CACHE_TYPE, globalMemCacheType_);
- CASE(CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE, globalMemCacheLineSize_);
- CASE(CL_DEVICE_GLOBAL_MEM_CACHE_SIZE, globalMemCacheSize_);
- CASE(CL_DEVICE_GLOBAL_MEM_SIZE, globalMemSize_);
- CASE(CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE, maxConstantBufferSize_);
- CASE(CL_DEVICE_MAX_CONSTANT_ARGS, maxConstantArgs_);
- CASE(CL_DEVICE_LOCAL_MEM_TYPE, localMemType_);
- CASE(CL_DEVICE_LOCAL_MEM_SIZE, localMemSize_);
- CASE(CL_DEVICE_ERROR_CORRECTION_SUPPORT, errorCorrectionSupport_);
- CASE(CL_DEVICE_HOST_UNIFIED_MEMORY, hostUnifiedMemory_);
- CASE(CL_DEVICE_PROFILING_TIMER_RESOLUTION, profilingTimerResolution_);
- CASE(CL_DEVICE_PROFILING_TIMER_OFFSET_AMD, profilingTimerOffset_);
- CASE(CL_DEVICE_ENDIAN_LITTLE, littleEndian_);
- CASE(CL_DEVICE_AVAILABLE, available_);
- CASE(CL_DEVICE_COMPILER_AVAILABLE, compilerAvailable_);
- CASE(CL_DEVICE_EXECUTION_CAPABILITIES, executionCapabilities_);
- CASE(CL_DEVICE_SVM_CAPABILITIES, svmCapabilities_);
- CASE(CL_DEVICE_PREFERRED_PLATFORM_ATOMIC_ALIGNMENT, preferredPlatformAtomicAlignment_);
- CASE(CL_DEVICE_PREFERRED_GLOBAL_ATOMIC_ALIGNMENT, preferredGlobalAtomicAlignment_);
- CASE(CL_DEVICE_PREFERRED_LOCAL_ATOMIC_ALIGNMENT, preferredLocalAtomicAlignment_);
- CASE(CL_DEVICE_QUEUE_ON_HOST_PROPERTIES, queueProperties_);
- CASE(CL_DEVICE_PLATFORM, platform_);
- CASE(CL_DEVICE_NAME, name_);
- CASE(CL_DEVICE_VENDOR, vendor_);
- CASE(CL_DRIVER_VERSION, driverVersion_);
- CASE(CL_DEVICE_PROFILE, profile_);
- CASE(CL_DEVICE_VERSION, version_);
- CASE(CL_DEVICE_OPENCL_C_VERSION, oclcVersion_);
- CASE(CL_DEVICE_EXTENSIONS, extensions_);
- CASE(CL_DEVICE_MAX_ATOMIC_COUNTERS_EXT, maxAtomicCounters_);
- CASE(CL_DEVICE_TOPOLOGY_AMD, deviceTopology_);
- CASE(CL_DEVICE_MAX_SEMAPHORE_SIZE_AMD, maxSemaphoreSize_);
- CASE(CL_DEVICE_BOARD_NAME_AMD, boardName_);
- CASE(CL_DEVICE_SPIR_VERSIONS, spirVersions_);
- CASE(CL_DEVICE_MAX_PIPE_ARGS, maxPipeArgs_);
- CASE(CL_DEVICE_PIPE_MAX_ACTIVE_RESERVATIONS, maxPipeActiveReservations_);
- CASE(CL_DEVICE_PIPE_MAX_PACKET_SIZE, maxPipePacketSize_);
- CASE(CL_DEVICE_MAX_GLOBAL_VARIABLE_SIZE, maxGlobalVariableSize_);
- CASE(CL_DEVICE_GLOBAL_VARIABLE_PREFERRED_TOTAL_SIZE, globalVariablePreferredTotalSize_);
- CASE(CL_DEVICE_QUEUE_ON_DEVICE_PROPERTIES, queueOnDeviceProperties_);
- CASE(CL_DEVICE_QUEUE_ON_DEVICE_PREFERRED_SIZE, queueOnDevicePreferredSize_);
- CASE(CL_DEVICE_QUEUE_ON_DEVICE_MAX_SIZE, queueOnDeviceMaxSize_);
- CASE(CL_DEVICE_MAX_ON_DEVICE_QUEUES, maxOnDeviceQueues_);
- CASE(CL_DEVICE_MAX_ON_DEVICE_EVENTS, maxOnDeviceEvents_);
+ CASE(CL_DEVICE_VENDOR_ID, vendorId_);
+ CASE(CL_DEVICE_MAX_COMPUTE_UNITS, maxComputeUnits_);
+ CASE(CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS, maxWorkItemDimensions_);
+ CASE(CL_DEVICE_MAX_WORK_GROUP_SIZE, maxWorkGroupSize_);
+ CASE(CL_DEVICE_MAX_WORK_ITEM_SIZES, maxWorkItemSizes_);
+ CASE(CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR, preferredVectorWidthChar_);
+ CASE(CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT, preferredVectorWidthShort_);
+ CASE(CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT, preferredVectorWidthInt_);
+ CASE(CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG, preferredVectorWidthLong_);
+ CASE(CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT, preferredVectorWidthFloat_);
+ CASE(CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE, preferredVectorWidthDouble_);
+ CASE(CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF, preferredVectorWidthDouble_);
+ CASE(CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR, nativeVectorWidthChar_);
+ CASE(CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT, nativeVectorWidthShort_);
+ CASE(CL_DEVICE_NATIVE_VECTOR_WIDTH_INT, nativeVectorWidthInt_);
+ CASE(CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG, nativeVectorWidthLong_);
+ CASE(CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT, nativeVectorWidthFloat_);
+ CASE(CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE, nativeVectorWidthDouble_);
+ CASE(CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF, nativeVectorWidthDouble_);
+ CASE(CL_DEVICE_MAX_CLOCK_FREQUENCY, maxClockFrequency_);
+ CASE(CL_DEVICE_ADDRESS_BITS, addressBits_);
+ CASE(CL_DEVICE_MAX_READ_IMAGE_ARGS, maxReadImageArgs_);
+ CASE(CL_DEVICE_MAX_WRITE_IMAGE_ARGS, maxWriteImageArgs_);
+ CASE(CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS, maxReadWriteImageArgs_);
+ CASE(CL_DEVICE_MAX_MEM_ALLOC_SIZE, maxMemAllocSize_);
+ CASE(CL_DEVICE_IMAGE2D_MAX_WIDTH, image2DMaxWidth_);
+ CASE(CL_DEVICE_IMAGE2D_MAX_HEIGHT, image2DMaxHeight_);
+ CASE(CL_DEVICE_IMAGE3D_MAX_WIDTH, image3DMaxWidth_);
+ CASE(CL_DEVICE_IMAGE3D_MAX_HEIGHT, image3DMaxHeight_);
+ CASE(CL_DEVICE_IMAGE3D_MAX_DEPTH, image3DMaxDepth_);
+ CASE(CL_DEVICE_IMAGE_SUPPORT, imageSupport_);
+ CASE(CL_DEVICE_MAX_PARAMETER_SIZE, maxParameterSize_);
+ CASE(CL_DEVICE_MAX_SAMPLERS, maxSamplers_);
+ CASE(CL_DEVICE_MEM_BASE_ADDR_ALIGN, memBaseAddrAlign_);
+ CASE(CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE, minDataTypeAlignSize_);
+ CASE(CL_DEVICE_HALF_FP_CONFIG, halfFPConfig_);
+ CASE(CL_DEVICE_SINGLE_FP_CONFIG, singleFPConfig_);
+ CASE(CL_DEVICE_DOUBLE_FP_CONFIG, doubleFPConfig_);
+ CASE(CL_DEVICE_GLOBAL_MEM_CACHE_TYPE, globalMemCacheType_);
+ CASE(CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE, globalMemCacheLineSize_);
+ CASE(CL_DEVICE_GLOBAL_MEM_CACHE_SIZE, globalMemCacheSize_);
+ CASE(CL_DEVICE_GLOBAL_MEM_SIZE, globalMemSize_);
+ CASE(CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE, maxConstantBufferSize_);
+ CASE(CL_DEVICE_MAX_CONSTANT_ARGS, maxConstantArgs_);
+ CASE(CL_DEVICE_LOCAL_MEM_TYPE, localMemType_);
+ CASE(CL_DEVICE_LOCAL_MEM_SIZE, localMemSize_);
+ CASE(CL_DEVICE_ERROR_CORRECTION_SUPPORT, errorCorrectionSupport_);
+ CASE(CL_DEVICE_HOST_UNIFIED_MEMORY, hostUnifiedMemory_);
+ CASE(CL_DEVICE_PROFILING_TIMER_RESOLUTION, profilingTimerResolution_);
+ CASE(CL_DEVICE_PROFILING_TIMER_OFFSET_AMD, profilingTimerOffset_);
+ CASE(CL_DEVICE_ENDIAN_LITTLE, littleEndian_);
+ CASE(CL_DEVICE_AVAILABLE, available_);
+ CASE(CL_DEVICE_COMPILER_AVAILABLE, compilerAvailable_);
+ CASE(CL_DEVICE_EXECUTION_CAPABILITIES, executionCapabilities_);
+ CASE(CL_DEVICE_SVM_CAPABILITIES, svmCapabilities_);
+ CASE(CL_DEVICE_PREFERRED_PLATFORM_ATOMIC_ALIGNMENT, preferredPlatformAtomicAlignment_);
+ CASE(CL_DEVICE_PREFERRED_GLOBAL_ATOMIC_ALIGNMENT, preferredGlobalAtomicAlignment_);
+ CASE(CL_DEVICE_PREFERRED_LOCAL_ATOMIC_ALIGNMENT, preferredLocalAtomicAlignment_);
+ CASE(CL_DEVICE_QUEUE_ON_HOST_PROPERTIES, queueProperties_);
+ CASE(CL_DEVICE_PLATFORM, platform_);
+ CASE(CL_DEVICE_NAME, name_);
+ CASE(CL_DEVICE_VENDOR, vendor_);
+ CASE(CL_DRIVER_VERSION, driverVersion_);
+ CASE(CL_DEVICE_PROFILE, profile_);
+ CASE(CL_DEVICE_VERSION, version_);
+ CASE(CL_DEVICE_OPENCL_C_VERSION, oclcVersion_);
+ CASE(CL_DEVICE_EXTENSIONS, extensions_);
+ CASE(CL_DEVICE_MAX_ATOMIC_COUNTERS_EXT, maxAtomicCounters_);
+ CASE(CL_DEVICE_TOPOLOGY_AMD, deviceTopology_);
+ CASE(CL_DEVICE_MAX_SEMAPHORE_SIZE_AMD, maxSemaphoreSize_);
+ CASE(CL_DEVICE_BOARD_NAME_AMD, boardName_);
+ CASE(CL_DEVICE_SPIR_VERSIONS, spirVersions_);
+ CASE(CL_DEVICE_MAX_PIPE_ARGS, maxPipeArgs_);
+ CASE(CL_DEVICE_PIPE_MAX_ACTIVE_RESERVATIONS, maxPipeActiveReservations_);
+ CASE(CL_DEVICE_PIPE_MAX_PACKET_SIZE, maxPipePacketSize_);
+ CASE(CL_DEVICE_MAX_GLOBAL_VARIABLE_SIZE, maxGlobalVariableSize_);
+ CASE(CL_DEVICE_GLOBAL_VARIABLE_PREFERRED_TOTAL_SIZE, globalVariablePreferredTotalSize_);
+ CASE(CL_DEVICE_QUEUE_ON_DEVICE_PROPERTIES, queueOnDeviceProperties_);
+ CASE(CL_DEVICE_QUEUE_ON_DEVICE_PREFERRED_SIZE, queueOnDevicePreferredSize_);
+ CASE(CL_DEVICE_QUEUE_ON_DEVICE_MAX_SIZE, queueOnDeviceMaxSize_);
+ CASE(CL_DEVICE_MAX_ON_DEVICE_QUEUES, maxOnDeviceQueues_);
+ CASE(CL_DEVICE_MAX_ON_DEVICE_EVENTS, maxOnDeviceEvents_);
#ifdef cl_ext_device_fission
case CL_DEVICE_AFFINITY_DOMAINS_EXT: {
- const device::AffinityDomain& affinityDomain =
- as_amd(device)->info().affinityDomain_;
+ const device::AffinityDomain& affinityDomain = as_amd(device)->info().affinityDomain_;
- size_t valueSize = affinityDomain.getNumSet() *
- sizeof(cl_device_partition_property_ext);
- if (param_value != NULL && param_value_size < valueSize) {
- return CL_INVALID_VALUE;
+ size_t valueSize = affinityDomain.getNumSet() * sizeof(cl_device_partition_property_ext);
+ if (param_value != NULL && param_value_size < valueSize) {
+ return CL_INVALID_VALUE;
+ }
+ *not_null(param_value_size_ret) = valueSize;
+ if (param_value != NULL) {
+ affinityDomain.toCLExt(reinterpret_cast(param_value));
+ if (param_value_size > valueSize) {
+ ::memset(static_cast(param_value) + valueSize, '\0', param_value_size - valueSize);
}
- *not_null(param_value_size_ret) = valueSize;
- if (param_value != NULL) {
- affinityDomain.toCLExt(
- reinterpret_cast(param_value));
- if (param_value_size > valueSize) {
- ::memset(static_cast(param_value) + valueSize,
- '\0', param_value_size - valueSize);
- }
- }
- return CL_SUCCESS;
+ }
+ return CL_SUCCESS;
}
case CL_DEVICE_PARTITION_STYLE_EXT: {
- const device::PartitionInfo& partitionInfo =
- as_amd(device)->info().partitionCreateInfo_;
- size_t valueSize = 0;
- cl_device_partition_property_ext* properties =
- reinterpret_cast(param_value);
+ const device::PartitionInfo& partitionInfo = as_amd(device)->info().partitionCreateInfo_;
+ size_t valueSize = 0;
+ cl_device_partition_property_ext* properties =
+ reinterpret_cast(param_value);
- switch (partitionInfo.type_.value_) {
+ switch (partitionInfo.type_.value_) {
case device::PartitionType::EQUALLY:
- valueSize = 3 * sizeof(cl_device_partition_property_ext);
- if (param_value != NULL) {
- if (param_value_size < valueSize) {
- return CL_INVALID_VALUE;
- }
- properties[0] = CL_DEVICE_PARTITION_EQUALLY_EXT;
- properties[1] = (cl_device_partition_property_ext)
- partitionInfo.equally_.numComputeUnits_;
- properties[2] = CL_PROPERTIES_LIST_END_EXT;
+ valueSize = 3 * sizeof(cl_device_partition_property_ext);
+ if (param_value != NULL) {
+ if (param_value_size < valueSize) {
+ return CL_INVALID_VALUE;
}
- break;
+ properties[0] = CL_DEVICE_PARTITION_EQUALLY_EXT;
+ properties[1] =
+ (cl_device_partition_property_ext)partitionInfo.equally_.numComputeUnits_;
+ properties[2] = CL_PROPERTIES_LIST_END_EXT;
+ }
+ break;
case device::PartitionType::BY_COUNTS:
- valueSize = (partitionInfo.byCounts_.listSize_ + 2) *
- sizeof(cl_device_partition_property_ext);
- if (param_value != NULL) {
- if (param_value_size < valueSize) {
- return CL_INVALID_VALUE;
- }
- *properties++ = CL_DEVICE_PARTITION_BY_COUNTS_EXT;
- for (size_t i = 0; i < partitionInfo.byCounts_.listSize_;
- ++i) {
- *properties++ = partitionInfo.byCounts_.countsList_[i];
- }
- *properties = CL_PROPERTIES_LIST_END_EXT;
+ valueSize =
+ (partitionInfo.byCounts_.listSize_ + 2) * sizeof(cl_device_partition_property_ext);
+ if (param_value != NULL) {
+ if (param_value_size < valueSize) {
+ return CL_INVALID_VALUE;
}
- break;
+ *properties++ = CL_DEVICE_PARTITION_BY_COUNTS_EXT;
+ for (size_t i = 0; i < partitionInfo.byCounts_.listSize_; ++i) {
+ *properties++ = partitionInfo.byCounts_.countsList_[i];
+ }
+ *properties = CL_PROPERTIES_LIST_END_EXT;
+ }
+ break;
case device::PartitionType::BY_AFFINITY_DOMAIN:
- valueSize = 3 * sizeof(cl_device_partition_property_ext);
- if (param_value != NULL) {
- if (param_value_size < valueSize) {
- return CL_INVALID_VALUE;
- }
- properties[0] = CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN_EXT;
- properties[1] = partitionInfo.byAffinityDomain_.toCLExt();
- properties[2] = CL_PROPERTIES_LIST_END_EXT;
+ valueSize = 3 * sizeof(cl_device_partition_property_ext);
+ if (param_value != NULL) {
+ if (param_value_size < valueSize) {
+ return CL_INVALID_VALUE;
}
- break;
- }
+ properties[0] = CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN_EXT;
+ properties[1] = partitionInfo.byAffinityDomain_.toCLExt();
+ properties[2] = CL_PROPERTIES_LIST_END_EXT;
+ }
+ break;
+ }
- *not_null(param_value_size_ret) = valueSize;
- if (param_value != NULL && param_value_size > valueSize) {
- ::memset(static_cast(param_value) + valueSize,
- '\0', param_value_size - valueSize);
- }
- return CL_SUCCESS;
+ *not_null(param_value_size_ret) = valueSize;
+ if (param_value != NULL && param_value_size > valueSize) {
+ ::memset(static_cast(param_value) + valueSize, '\0', param_value_size - valueSize);
+ }
+ return CL_SUCCESS;
}
case CL_DEVICE_PARTITION_TYPES_EXT: {
- const device::PartitionType& partitionProperties =
- as_amd(device)->info().partitionProperties_;
- size_t valueSize = partitionProperties.getNumSet() *
- sizeof(cl_device_partition_property_ext);
+ const device::PartitionType& partitionProperties =
+ as_amd(device)->info().partitionProperties_;
+ size_t valueSize = partitionProperties.getNumSet() * sizeof(cl_device_partition_property_ext);
- if (param_value != NULL && param_value_size < valueSize) {
- return CL_INVALID_VALUE;
+ if (param_value != NULL && param_value_size < valueSize) {
+ return CL_INVALID_VALUE;
+ }
+ *not_null(param_value_size_ret) = valueSize;
+ if (param_value != NULL) {
+ partitionProperties.toCLExt(
+ reinterpret_cast(param_value));
+ if (param_value_size > valueSize) {
+ ::memset(static_cast(param_value) + valueSize, '\0', param_value_size - valueSize);
}
- *not_null(param_value_size_ret) = valueSize;
- if (param_value != NULL) {
- partitionProperties.toCLExt(
- reinterpret_cast(param_value));
- if (param_value_size > valueSize) {
- ::memset(static_cast(param_value) + valueSize,
- '\0', param_value_size - valueSize);
- }
- }
- return CL_SUCCESS;
+ }
+ return CL_SUCCESS;
}
case CL_DEVICE_PARENT_DEVICE_EXT: {
- cl_device_id parent = !as_amd(device)->isRootDevice()
- ? as_cl(as_amd(device)->parent()) : (cl_device_id)0;
- return amd::clGetInfo(
- parent, param_value_size, param_value, param_value_size_ret);
+ cl_device_id parent =
+ !as_amd(device)->isRootDevice() ? as_cl(as_amd(device)->parent()) : (cl_device_id)0;
+ return amd::clGetInfo(parent, param_value_size, param_value, param_value_size_ret);
}
case CL_DEVICE_REFERENCE_COUNT_EXT: {
- cl_uint count = as_amd(device)->referenceCount();
- return amd::clGetInfo(
- count, param_value_size, param_value, param_value_size_ret);
+ cl_uint count = as_amd(device)->referenceCount();
+ return amd::clGetInfo(count, param_value_size, param_value, param_value_size_ret);
}
-#endif // cl_ext_device_fission
- CASE(CL_DEVICE_LINKER_AVAILABLE, linkerAvailable_);
- CASE(CL_DEVICE_BUILT_IN_KERNELS, builtInKernels_);
- CASE(CL_DEVICE_IMAGE_MAX_BUFFER_SIZE, imageMaxBufferSize_);
- CASE(CL_DEVICE_IMAGE_MAX_ARRAY_SIZE, imageMaxArraySize_);
+#endif // cl_ext_device_fission
+ CASE(CL_DEVICE_LINKER_AVAILABLE, linkerAvailable_);
+ CASE(CL_DEVICE_BUILT_IN_KERNELS, builtInKernels_);
+ CASE(CL_DEVICE_IMAGE_MAX_BUFFER_SIZE, imageMaxBufferSize_);
+ CASE(CL_DEVICE_IMAGE_MAX_ARRAY_SIZE, imageMaxArraySize_);
case CL_DEVICE_PARENT_DEVICE: {
- cl_device_id parent = !as_amd(device)->isRootDevice()
- ? as_cl(as_amd(device)->parent()) : (cl_device_id)0;
- return amd::clGetInfo(
- parent, param_value_size, param_value, param_value_size_ret);
+ cl_device_id parent =
+ !as_amd(device)->isRootDevice() ? as_cl(as_amd(device)->parent()) : (cl_device_id)0;
+ return amd::clGetInfo(parent, param_value_size, param_value, param_value_size_ret);
}
- CASE(CL_DEVICE_PARTITION_MAX_SUB_DEVICES, maxComputeUnits_);
- case CL_DEVICE_PARTITION_PROPERTIES:
- {
- const device::PartitionType& partitionProperties =
- as_amd(device)->info().partitionProperties_;
- size_t valueSize = partitionProperties.getNumSet() *
- sizeof(cl_device_partition_property);
+ CASE(CL_DEVICE_PARTITION_MAX_SUB_DEVICES, maxComputeUnits_);
+ case CL_DEVICE_PARTITION_PROPERTIES: {
+ const device::PartitionType& partitionProperties =
+ as_amd(device)->info().partitionProperties_;
+ size_t valueSize = partitionProperties.getNumSet() * sizeof(cl_device_partition_property);
- if (param_value != NULL && param_value_size < valueSize) {
- return CL_INVALID_VALUE;
- }
- *not_null(param_value_size_ret) = valueSize;
- if (param_value != NULL) {
- partitionProperties.toCL(
- reinterpret_cast(param_value));
- if (param_value_size > valueSize) {
- ::memset(static_cast(param_value) + valueSize,
- '\0', param_value_size - valueSize);
- }
- }
- return CL_SUCCESS;
+ if (param_value != NULL && param_value_size < valueSize) {
+ return CL_INVALID_VALUE;
+ }
+ *not_null(param_value_size_ret) = valueSize;
+ if (param_value != NULL) {
+ partitionProperties.toCL(reinterpret_cast(param_value));
+ if (param_value_size > valueSize) {
+ ::memset(static_cast(param_value) + valueSize, '\0', param_value_size - valueSize);
}
+ }
+ return CL_SUCCESS;
+ }
case CL_DEVICE_PARTITION_AFFINITY_DOMAIN: {
- cl_device_affinity_domain deviceAffinity =
- as_amd(device)->info().affinityDomain_.toCL();
- return amd::clGetInfo(
- deviceAffinity, param_value_size, param_value, param_value_size_ret);
+ cl_device_affinity_domain deviceAffinity = as_amd(device)->info().affinityDomain_.toCL();
+ return amd::clGetInfo(deviceAffinity, param_value_size, param_value, param_value_size_ret);
}
- case CL_DEVICE_PARTITION_TYPE:
- {
- const device::PartitionInfo& partitionInfo =
- as_amd(device)->info().partitionCreateInfo_;
- size_t valueSize = 0;
- cl_device_partition_property* properties =
- reinterpret_cast(param_value);
+ case CL_DEVICE_PARTITION_TYPE: {
+ const device::PartitionInfo& partitionInfo = as_amd(device)->info().partitionCreateInfo_;
+ size_t valueSize = 0;
+ cl_device_partition_property* properties =
+ reinterpret_cast(param_value);
- switch (partitionInfo.type_.value_) {
- case device::PartitionType::EQUALLY:
- valueSize = 3 * sizeof(cl_device_partition_property);
- if (param_value != NULL) {
- if (param_value_size < valueSize) {
- return CL_INVALID_VALUE;
- }
- properties[0] = CL_DEVICE_PARTITION_EQUALLY;
- properties[1] = (cl_device_partition_property)
- partitionInfo.equally_.numComputeUnits_;
- properties[2] = (cl_device_partition_property)0;
- }
- break;
-
- case device::PartitionType::BY_COUNTS:
- valueSize = (partitionInfo.byCounts_.listSize_ + 2) *
- sizeof(cl_device_partition_property);
- if (param_value != NULL) {
- if (param_value_size < valueSize) {
- return CL_INVALID_VALUE;
- }
- *properties++ = CL_DEVICE_PARTITION_BY_COUNTS;
- for (size_t i = 0; i < partitionInfo.byCounts_.listSize_;
- ++i) {
- *properties++ = partitionInfo.byCounts_.countsList_[i];
- }
- *properties = (cl_device_partition_property)0;
- }
- break;
-
- case device::PartitionType::BY_AFFINITY_DOMAIN:
- valueSize = 3 * sizeof(cl_device_partition_property);
- if (param_value != NULL) {
- if (param_value_size < valueSize) {
- return CL_INVALID_VALUE;
- }
- properties[0] = CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN;
- properties[1] = (cl_device_partition_property)
- partitionInfo.byAffinityDomain_.toCL();
- properties[2] = (cl_device_partition_property)0;
- }
- break;
+ switch (partitionInfo.type_.value_) {
+ case device::PartitionType::EQUALLY:
+ valueSize = 3 * sizeof(cl_device_partition_property);
+ if (param_value != NULL) {
+ if (param_value_size < valueSize) {
+ return CL_INVALID_VALUE;
}
+ properties[0] = CL_DEVICE_PARTITION_EQUALLY;
+ properties[1] = (cl_device_partition_property)partitionInfo.equally_.numComputeUnits_;
+ properties[2] = (cl_device_partition_property)0;
+ }
+ break;
- *not_null(param_value_size_ret) = valueSize;
- if (param_value != NULL && param_value_size > valueSize) {
- ::memset(static_cast(param_value) + valueSize,
- '\0', param_value_size - valueSize);
+ case device::PartitionType::BY_COUNTS:
+ valueSize =
+ (partitionInfo.byCounts_.listSize_ + 2) * sizeof(cl_device_partition_property);
+ if (param_value != NULL) {
+ if (param_value_size < valueSize) {
+ return CL_INVALID_VALUE;
}
- return CL_SUCCESS;
- }
+ *properties++ = CL_DEVICE_PARTITION_BY_COUNTS;
+ for (size_t i = 0; i < partitionInfo.byCounts_.listSize_; ++i) {
+ *properties++ = partitionInfo.byCounts_.countsList_[i];
+ }
+ *properties = (cl_device_partition_property)0;
+ }
+ break;
+
+ case device::PartitionType::BY_AFFINITY_DOMAIN:
+ valueSize = 3 * sizeof(cl_device_partition_property);
+ if (param_value != NULL) {
+ if (param_value_size < valueSize) {
+ return CL_INVALID_VALUE;
+ }
+ properties[0] = CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN;
+ properties[1] = (cl_device_partition_property)partitionInfo.byAffinityDomain_.toCL();
+ properties[2] = (cl_device_partition_property)0;
+ }
+ break;
+ }
+
+ *not_null(param_value_size_ret) = valueSize;
+ if (param_value != NULL && param_value_size > valueSize) {
+ ::memset(static_cast(param_value) + valueSize, '\0', param_value_size - valueSize);
+ }
+ return CL_SUCCESS;
+ }
case CL_DEVICE_REFERENCE_COUNT: {
- cl_uint count = as_amd(device)->referenceCount();
- return amd::clGetInfo(
- count, param_value_size, param_value, param_value_size_ret);
+ cl_uint count = as_amd(device)->referenceCount();
+ return amd::clGetInfo(count, param_value_size, param_value, param_value_size_ret);
}
- CASE(CL_DEVICE_PREFERRED_INTEROP_USER_SYNC, preferredInteropUserSync_);
- CASE(CL_DEVICE_PRINTF_BUFFER_SIZE, printfBufferSize_);
- CASE(CL_DEVICE_IMAGE_PITCH_ALIGNMENT, imagePitchAlignment_);
- CASE(CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT, imageBaseAddressAlignment_);
+ CASE(CL_DEVICE_PREFERRED_INTEROP_USER_SYNC, preferredInteropUserSync_);
+ CASE(CL_DEVICE_PRINTF_BUFFER_SIZE, printfBufferSize_);
+ CASE(CL_DEVICE_IMAGE_PITCH_ALIGNMENT, imagePitchAlignment_);
+ CASE(CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT, imageBaseAddressAlignment_);
default:
- break;
- }
- if (as_amd(device)->type() == CL_DEVICE_TYPE_GPU) {
- switch (param_name) {
- case CL_DEVICE_GLOBAL_FREE_MEMORY_AMD: {
- // Free memory should contain 2 values:
- // total free memory and the biggest free block
- size_t freeMemory[2];
- if (!as_amd(device)->globalFreeMemory(freeMemory)) {
- return CL_INVALID_DEVICE;
- }
- if (param_value_size < sizeof(freeMemory)) {
- // Return just total free memory if the app provided space for one value
- return amd::clGetInfo(
- freeMemory[0], param_value_size, param_value, param_value_size_ret);
- }
- else {
- return amd::clGetInfo(
- freeMemory, param_value_size, param_value, param_value_size_ret);
- }
+ break;
+ }
+ if (as_amd(device)->type() == CL_DEVICE_TYPE_GPU) {
+ switch (param_name) {
+ case CL_DEVICE_GLOBAL_FREE_MEMORY_AMD: {
+ // Free memory should contain 2 values:
+ // total free memory and the biggest free block
+ size_t freeMemory[2];
+ if (!as_amd(device)->globalFreeMemory(freeMemory)) {
+ return CL_INVALID_DEVICE;
}
+ if (param_value_size < sizeof(freeMemory)) {
+ // Return just total free memory if the app provided space for one value
+ return amd::clGetInfo(freeMemory[0], param_value_size, param_value, param_value_size_ret);
+ } else {
+ return amd::clGetInfo(freeMemory, param_value_size, param_value, param_value_size_ret);
+ }
+ }
CASE(CL_DEVICE_SIMD_PER_COMPUTE_UNIT_AMD, simdPerCU_);
CASE(CL_DEVICE_SIMD_WIDTH_AMD, simdWidth_);
CASE(CL_DEVICE_SIMD_INSTRUCTION_WIDTH_AMD, simdInstructionWidth_);
@@ -595,166 +544,146 @@ RUNTIME_ENTRY(cl_int, clGetDeviceInfo, (
CASE(CL_DEVICE_LOCAL_MEM_SIZE_PER_COMPUTE_UNIT_AMD, localMemSizePerCU_);
CASE(CL_DEVICE_LOCAL_MEM_BANKS_AMD, localMemBanks_);
CASE(CL_DEVICE_THREAD_TRACE_SUPPORTED_AMD, threadTraceEnable_);
- case CL_DEVICE_GFXIP_MAJOR_AMD: {
- cl_uint major= as_amd(device)->info().gfxipVersion_ / 100;
- return amd::clGetInfo(
- major, param_value_size, param_value, param_value_size_ret);
- }
- case CL_DEVICE_GFXIP_MINOR_AMD: {
- cl_uint minor= as_amd(device)->info().gfxipVersion_ % 100;
- return amd::clGetInfo(
- minor, param_value_size, param_value, param_value_size_ret);
- }
+ case CL_DEVICE_GFXIP_MAJOR_AMD: {
+ cl_uint major = as_amd(device)->info().gfxipVersion_ / 100;
+ return amd::clGetInfo(major, param_value_size, param_value, param_value_size_ret);
+ }
+ case CL_DEVICE_GFXIP_MINOR_AMD: {
+ cl_uint minor = as_amd(device)->info().gfxipVersion_ % 100;
+ return amd::clGetInfo(minor, param_value_size, param_value, param_value_size_ret);
+ }
CASE(CL_DEVICE_AVAILABLE_ASYNC_QUEUES_AMD, numAsyncQueues_);
-#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_QUEUES_AMD 0x404D
+#define CL_DEVICE_MAX_REAL_TIME_COMPUTE_UNITS_AMD 0x404E
CASE(CL_DEVICE_MAX_REAL_TIME_COMPUTE_QUEUES_AMD, numRTQueues_);
CASE(CL_DEVICE_MAX_REAL_TIME_COMPUTE_UNITS_AMD, numRTCUs_);
- default:
- break;
- }
+ default:
+ break;
}
+ }
#undef CASE
- return CL_INVALID_VALUE;
+ return CL_INVALID_VALUE;
}
RUNTIME_EXIT
#ifdef cl_ext_device_fission
-RUNTIME_ENTRY(cl_int, 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))
-{
- if (!is_valid(in_device)) {
- return CL_INVALID_DEVICE;
- }
- if (partition_properties == NULL || *partition_properties == 0u) {
- return CL_INVALID_VALUE;
- }
- if (((num_entries > 0 || num_devices == NULL) && out_devices == NULL)
- || (num_entries == 0 && out_devices != NULL)) {
- return CL_INVALID_VALUE;
- }
+RUNTIME_ENTRY(cl_int, 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)) {
+ if (!is_valid(in_device)) {
+ return CL_INVALID_DEVICE;
+ }
+ if (partition_properties == NULL || *partition_properties == 0u) {
+ return CL_INVALID_VALUE;
+ }
+ if (((num_entries > 0 || num_devices == NULL) && out_devices == NULL) ||
+ (num_entries == 0 && out_devices != NULL)) {
+ return CL_INVALID_VALUE;
+ }
- device::CreateSubDevicesInfoT create_info;
- switch (*partition_properties) {
+ device::CreateSubDevicesInfoT create_info;
+ switch (*partition_properties) {
case CL_DEVICE_PARTITION_EQUALLY_EXT:
- create_info.p_.type_.value_ = device::PartitionType::EQUALLY;
- create_info.p_.equally_.numComputeUnits_ =
- (size_t)partition_properties[1];
- break;
+ create_info.p_.type_.value_ = device::PartitionType::EQUALLY;
+ create_info.p_.equally_.numComputeUnits_ = (size_t)partition_properties[1];
+ break;
case CL_DEVICE_PARTITION_BY_COUNTS_EXT:
- create_info.p_.type_.value_ = device::PartitionType::BY_COUNTS;
- create_info.initCountsList(partition_properties + 1);
- break;
+ create_info.p_.type_.value_ = device::PartitionType::BY_COUNTS;
+ create_info.initCountsList(partition_properties + 1);
+ break;
case CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN_EXT:
- create_info.p_.type_.value_ = device::PartitionType::BY_AFFINITY_DOMAIN;
- create_info.p_.byAffinityDomain_.value_ =
- (uint)partition_properties[1];
- break;
+ create_info.p_.type_.value_ = device::PartitionType::BY_AFFINITY_DOMAIN;
+ create_info.p_.byAffinityDomain_.value_ = (uint)partition_properties[1];
+ break;
default:
- return CL_INVALID_VALUE;
- }
+ return CL_INVALID_VALUE;
+ }
- cl_int ret = as_amd(in_device)->createSubDevices(
- create_info, num_entries, out_devices, num_devices);
+ cl_int ret =
+ as_amd(in_device)->createSubDevices(create_info, num_entries, out_devices, num_devices);
- if (ret == CL_DEVICE_PARTITION_FAILED) {
- return CL_DEVICE_PARTITION_FAILED_EXT;
- }
- if (ret == CL_INVALID_DEVICE_PARTITION_COUNT) {
- return CL_INVALID_PARTITION_COUNT_EXT;
- }
- return ret;
+ if (ret == CL_DEVICE_PARTITION_FAILED) {
+ return CL_DEVICE_PARTITION_FAILED_EXT;
+ }
+ if (ret == CL_INVALID_DEVICE_PARTITION_COUNT) {
+ return CL_INVALID_PARTITION_COUNT_EXT;
+ }
+ return ret;
}
RUNTIME_EXIT
-RUNTIME_ENTRY(cl_int, clRetainDeviceEXT, (cl_device_id device))
-{
- if (!is_valid(device)) {
- return CL_INVALID_DEVICE;
- }
- as_amd(device)->retain();
- return CL_SUCCESS;
+RUNTIME_ENTRY(cl_int, clRetainDeviceEXT, (cl_device_id device)) {
+ if (!is_valid(device)) {
+ return CL_INVALID_DEVICE;
+ }
+ as_amd(device)->retain();
+ return CL_SUCCESS;
}
RUNTIME_EXIT
-RUNTIME_ENTRY(cl_int, clReleaseDeviceEXT, (cl_device_id device))
-{
- if (!is_valid(device)) {
- return CL_INVALID_DEVICE;
- }
- as_amd(device)->release();
- return CL_SUCCESS;
+RUNTIME_ENTRY(cl_int, clReleaseDeviceEXT, (cl_device_id device)) {
+ if (!is_valid(device)) {
+ return CL_INVALID_DEVICE;
+ }
+ as_amd(device)->release();
+ return CL_SUCCESS;
}
RUNTIME_EXIT
-#endif // cl_ext_device_fission
+#endif // cl_ext_device_fission
-RUNTIME_ENTRY(cl_int, 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))
-{
- if (!is_valid(in_device)) {
- return CL_INVALID_DEVICE;
- }
- if (partition_properties == NULL || *partition_properties == 0u) {
- return CL_INVALID_VALUE;
- }
- if ((num_devices == NULL && out_devices == NULL) ||
- (num_entries == 0 && out_devices != NULL)) {
- return CL_INVALID_VALUE;
- }
+RUNTIME_ENTRY(cl_int, 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)) {
+ if (!is_valid(in_device)) {
+ return CL_INVALID_DEVICE;
+ }
+ if (partition_properties == NULL || *partition_properties == 0u) {
+ return CL_INVALID_VALUE;
+ }
+ if ((num_devices == NULL && out_devices == NULL) || (num_entries == 0 && out_devices != NULL)) {
+ return CL_INVALID_VALUE;
+ }
- device::CreateSubDevicesInfoT create_info;
- switch (*partition_properties) {
+ device::CreateSubDevicesInfoT create_info;
+ switch (*partition_properties) {
case CL_DEVICE_PARTITION_EQUALLY:
- create_info.p_.type_.value_ = device::PartitionType::EQUALLY;
- create_info.p_.equally_.numComputeUnits_ =
- (size_t)partition_properties[1];
- break;
+ create_info.p_.type_.value_ = device::PartitionType::EQUALLY;
+ create_info.p_.equally_.numComputeUnits_ = (size_t)partition_properties[1];
+ break;
case CL_DEVICE_PARTITION_BY_COUNTS:
- create_info.p_.type_.value_ = device::PartitionType::BY_COUNTS;
- create_info.initCountsList(partition_properties + 1);
- break;
+ create_info.p_.type_.value_ = device::PartitionType::BY_COUNTS;
+ create_info.initCountsList(partition_properties + 1);
+ break;
case CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN:
- create_info.p_.type_.value_ = device::PartitionType::BY_AFFINITY_DOMAIN;
- create_info.p_.byAffinityDomain_.value_ =
- (uint)partition_properties[1];
- break;
+ create_info.p_.type_.value_ = device::PartitionType::BY_AFFINITY_DOMAIN;
+ create_info.p_.byAffinityDomain_.value_ = (uint)partition_properties[1];
+ break;
default:
- return CL_INVALID_VALUE;
- }
+ return CL_INVALID_VALUE;
+ }
- return as_amd(in_device)->createSubDevices(
- create_info, num_entries, out_devices, num_devices);
+ return as_amd(in_device)->createSubDevices(create_info, num_entries, out_devices, num_devices);
}
RUNTIME_EXIT
-RUNTIME_ENTRY(cl_int, clRetainDevice, (cl_device_id device))
-{
- if (!is_valid(device)) {
- return CL_INVALID_DEVICE;
- }
- as_amd(device)->retain();
- return CL_SUCCESS;
+RUNTIME_ENTRY(cl_int, clRetainDevice, (cl_device_id device)) {
+ if (!is_valid(device)) {
+ return CL_INVALID_DEVICE;
+ }
+ as_amd(device)->retain();
+ return CL_SUCCESS;
}
RUNTIME_EXIT
-RUNTIME_ENTRY(cl_int, clReleaseDevice, (cl_device_id device))
-{
- if (!is_valid(device)) {
- return CL_INVALID_DEVICE;
- }
- as_amd(device)->release();
- return CL_SUCCESS;
+RUNTIME_ENTRY(cl_int, clReleaseDevice, (cl_device_id device)) {
+ if (!is_valid(device)) {
+ return CL_INVALID_DEVICE;
+ }
+ as_amd(device)->release();
+ return CL_SUCCESS;
}
RUNTIME_EXIT
diff --git a/opencl/api/opencl/amdocl/cl_event.cpp b/opencl/api/opencl/amdocl/cl_event.cpp
index 7198d9ce83..8fefc3ba5b 100644
--- a/opencl/api/opencl/amdocl/cl_event.cpp
+++ b/opencl/api/opencl/amdocl/cl_event.cpp
@@ -62,45 +62,41 @@
*
* \version 1.0r33
*/
-RUNTIME_ENTRY(cl_int, clWaitForEvents, (
- cl_uint num_events,
- const cl_event *event_list))
-{
- if (num_events == 0 || event_list == NULL) {
- return CL_INVALID_VALUE;
+RUNTIME_ENTRY(cl_int, clWaitForEvents, (cl_uint num_events, const cl_event* event_list)) {
+ if (num_events == 0 || event_list == NULL) {
+ return CL_INVALID_VALUE;
+ }
+
+ const amd::Context* prevContext = NULL;
+ const amd::HostQueue* prevQueue = NULL;
+
+ for (cl_uint i = 0; i < num_events; ++i) {
+ cl_event event = event_list[i];
+
+ if (!is_valid(event)) {
+ return CL_INVALID_EVENT;
}
- const amd::Context* prevContext = NULL;
- const amd::HostQueue* prevQueue = NULL;
-
- for (cl_uint i = 0; i < num_events; ++i) {
- cl_event event = event_list[i];
-
- if (!is_valid(event)) {
- return CL_INVALID_EVENT;
- }
-
- // Make sure all the events are associated with the same context
- const amd::Context* context = &as_amd(event)->context();
- if (prevContext != NULL && prevContext != context) {
- return CL_INVALID_CONTEXT;
- }
- prevContext = context;
-
- // Flush the command queues associated with event1...eventN
- amd::HostQueue* queue = as_amd(event)->command().queue();
- if (queue != NULL && prevQueue != queue) {
- queue->flush();
- }
- prevQueue = queue;
+ // Make sure all the events are associated with the same context
+ const amd::Context* context = &as_amd(event)->context();
+ if (prevContext != NULL && prevContext != context) {
+ return CL_INVALID_CONTEXT;
}
+ prevContext = context;
- bool allSucceeded = true;
- while (num_events-- > 0) {
- allSucceeded &= as_amd(*event_list++)->awaitCompletion();
+ // Flush the command queues associated with event1...eventN
+ amd::HostQueue* queue = as_amd(event)->command().queue();
+ if (queue != NULL && prevQueue != queue) {
+ queue->flush();
}
- return allSucceeded ? CL_SUCCESS
- : CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST;
+ prevQueue = queue;
+ }
+
+ bool allSucceeded = true;
+ while (num_events-- > 0) {
+ allSucceeded &= as_amd(*event_list++)->awaitCompletion();
+ }
+ return allSucceeded ? CL_SUCCESS : CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST;
}
RUNTIME_EXIT
@@ -134,52 +130,44 @@ RUNTIME_EXIT
*
* \version 1.0r33
*/
-RUNTIME_ENTRY(cl_int, clGetEventInfo, (
- cl_event event,
- cl_event_info param_name,
- size_t param_value_size,
- void *param_value,
- size_t *param_value_size_ret))
-{
- if (!is_valid(event)) {
- return CL_INVALID_EVENT;
- }
+RUNTIME_ENTRY(cl_int, clGetEventInfo,
+ (cl_event event, cl_event_info param_name, size_t param_value_size, void* param_value,
+ size_t* param_value_size_ret)) {
+ if (!is_valid(event)) {
+ return CL_INVALID_EVENT;
+ }
- switch(param_name) {
+ switch (param_name) {
case CL_EVENT_CONTEXT: {
- amd::Context& amdCtx = const_cast(as_amd(event)->context());
- cl_context context = as_cl(&amdCtx);
- return amd::clGetInfo(
- context, param_value_size, param_value, param_value_size_ret);
+ amd::Context& amdCtx = const_cast(as_amd(event)->context());
+ cl_context context = as_cl(&amdCtx);
+ return amd::clGetInfo(context, param_value_size, param_value, param_value_size_ret);
}
case CL_EVENT_COMMAND_QUEUE: {
- amd::Command& command = as_amd(event)->command();
- cl_command_queue queue = command.queue() == NULL
- ? NULL : const_cast(as_cl(command.queue()->asCommandQueue()));
- return amd::clGetInfo(
- queue, param_value_size, param_value, param_value_size_ret);
+ amd::Command& command = as_amd(event)->command();
+ cl_command_queue queue = command.queue() == NULL
+ ? NULL
+ : const_cast(as_cl(command.queue()->asCommandQueue()));
+ return amd::clGetInfo(queue, param_value_size, param_value, param_value_size_ret);
}
case CL_EVENT_COMMAND_TYPE: {
- cl_command_type type = as_amd(event)->command().type();
- return amd::clGetInfo(
- type, param_value_size, param_value, param_value_size_ret);
+ cl_command_type type = as_amd(event)->command().type();
+ return amd::clGetInfo(type, param_value_size, param_value, param_value_size_ret);
}
case CL_EVENT_COMMAND_EXECUTION_STATUS: {
- as_amd(event)->notifyCmdQueue();
- cl_int status = as_amd(event)->command().status();
- return amd::clGetInfo(
- status, param_value_size, param_value, param_value_size_ret);
+ as_amd(event)->notifyCmdQueue();
+ cl_int status = as_amd(event)->command().status();
+ return amd::clGetInfo(status, param_value_size, param_value, param_value_size_ret);
}
case CL_EVENT_REFERENCE_COUNT: {
- cl_uint count = as_amd(event)->referenceCount();
- return amd::clGetInfo(
- count, param_value_size, param_value, param_value_size_ret);
+ cl_uint count = as_amd(event)->referenceCount();
+ return amd::clGetInfo(count, param_value_size, param_value, param_value_size_ret);
}
default:
- break;
- }
+ break;
+ }
- return CL_INVALID_VALUE;
+ return CL_INVALID_VALUE;
}
RUNTIME_EXIT
@@ -192,13 +180,12 @@ RUNTIME_EXIT
*
* \version 1.0r33
*/
-RUNTIME_ENTRY(cl_int, clRetainEvent, (cl_event event))
-{
- if (!is_valid(event)) {
- return CL_INVALID_EVENT;
- }
- as_amd(event)->retain();
- return CL_SUCCESS;
+RUNTIME_ENTRY(cl_int, clRetainEvent, (cl_event event)) {
+ if (!is_valid(event)) {
+ return CL_INVALID_EVENT;
+ }
+ as_amd(event)->retain();
+ return CL_SUCCESS;
}
RUNTIME_EXIT
@@ -214,13 +201,12 @@ RUNTIME_EXIT
*
* \version 1.0r33
*/
-RUNTIME_ENTRY(cl_int, clReleaseEvent, (cl_event event))
-{
- if (!is_valid(event)) {
- return CL_INVALID_EVENT;
- }
- as_amd(event)->release();
- return CL_SUCCESS;
+RUNTIME_ENTRY(cl_int, clReleaseEvent, (cl_event event)) {
+ if (!is_valid(event)) {
+ return CL_INVALID_EVENT;
+ }
+ as_amd(event)->release();
+ return CL_SUCCESS;
}
RUNTIME_EXIT
@@ -240,24 +226,21 @@ RUNTIME_EXIT
*
* \version 1.1r15
*/
-RUNTIME_ENTRY_RET(cl_event, clCreateUserEvent, (
- cl_context context,
- cl_int *errcode_ret))
-{
- if (!is_valid(context)) {
- *not_null(errcode_ret) = CL_INVALID_CONTEXT;
- return (cl_event) 0;
- }
+RUNTIME_ENTRY_RET(cl_event, clCreateUserEvent, (cl_context context, cl_int* errcode_ret)) {
+ if (!is_valid(context)) {
+ *not_null(errcode_ret) = CL_INVALID_CONTEXT;
+ return (cl_event)0;
+ }
- amd::Event* event = new amd::UserEvent(*as_amd(context));
- if (event == NULL) {
- *not_null(errcode_ret) = CL_OUT_OF_HOST_MEMORY;
- return (cl_event) 0;
- }
+ amd::Event* event = new amd::UserEvent(*as_amd(context));
+ if (event == NULL) {
+ *not_null(errcode_ret) = CL_OUT_OF_HOST_MEMORY;
+ return (cl_event)0;
+ }
- event->retain();
- *not_null(errcode_ret) = CL_SUCCESS;
- return as_cl(event);
+ event->retain();
+ *not_null(errcode_ret) = CL_SUCCESS;
+ return as_cl(event);
}
RUNTIME_EXIT
@@ -279,21 +262,18 @@ RUNTIME_EXIT
*
* \version 1.1r15
*/
-RUNTIME_ENTRY(cl_int, clSetUserEventStatus, (
- cl_event event,
- cl_int execution_status))
-{
- if (!is_valid(event)) {
- return CL_INVALID_EVENT;
- }
- if (execution_status > CL_COMPLETE) {
- return CL_INVALID_VALUE;
- }
+RUNTIME_ENTRY(cl_int, clSetUserEventStatus, (cl_event event, cl_int execution_status)) {
+ if (!is_valid(event)) {
+ return CL_INVALID_EVENT;
+ }
+ if (execution_status > CL_COMPLETE) {
+ return CL_INVALID_VALUE;
+ }
- if (!as_amd(event)->setStatus(execution_status)) {
- return CL_INVALID_OPERATION;
- }
- return CL_SUCCESS;
+ if (!as_amd(event)->setStatus(execution_status)) {
+ return CL_INVALID_OPERATION;
+ }
+ return CL_SUCCESS;
}
RUNTIME_EXIT
@@ -362,35 +342,30 @@ RUNTIME_EXIT
*
* \version 1.1r15
*/
-RUNTIME_ENTRY(cl_int, clSetEventCallback, (
- cl_event event,
- cl_int command_exec_callback_type,
- void (CL_CALLBACK * pfn_notify)(
- cl_event event, cl_int command_exec_status, void *user_data),
- void* user_data))
-{
- if (!is_valid(event)) {
- return CL_INVALID_EVENT;
- }
+RUNTIME_ENTRY(cl_int, clSetEventCallback,
+ (cl_event event, cl_int command_exec_callback_type,
+ void(CL_CALLBACK* pfn_notify)(cl_event event, cl_int command_exec_status,
+ void* user_data),
+ void* user_data)) {
+ if (!is_valid(event)) {
+ return CL_INVALID_EVENT;
+ }
- if (pfn_notify == NULL
- || command_exec_callback_type < CL_COMPLETE
- || command_exec_callback_type > CL_QUEUED) {
- return CL_INVALID_VALUE;
- }
+ if (pfn_notify == NULL || command_exec_callback_type < CL_COMPLETE ||
+ command_exec_callback_type > CL_QUEUED) {
+ return CL_INVALID_VALUE;
+ }
- if (!as_amd(event)->setCallback(
- command_exec_callback_type, pfn_notify, user_data)) {
- return CL_OUT_OF_HOST_MEMORY;
- }
+ if (!as_amd(event)->setCallback(command_exec_callback_type, pfn_notify, user_data)) {
+ return CL_OUT_OF_HOST_MEMORY;
+ }
- as_amd(event)->notifyCmdQueue();
+ as_amd(event)->notifyCmdQueue();
- return CL_SUCCESS;
+ return CL_SUCCESS;
}
RUNTIME_EXIT
/*! @}
* @}
*/
-
diff --git a/opencl/api/opencl/amdocl/cl_execute.cpp b/opencl/api/opencl/amdocl/cl_execute.cpp
index 42a4511639..32488871f8 100644
--- a/opencl/api/opencl/amdocl/cl_execute.cpp
+++ b/opencl/api/opencl/amdocl/cl_execute.cpp
@@ -150,144 +150,134 @@
*
* \version 1.0r33
*/
-RUNTIME_ENTRY(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 *event))
-{
- *not_null(event) = NULL;
+RUNTIME_ENTRY(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* event)) {
+ *not_null(event) = NULL;
- if (!is_valid(command_queue)) {
- return CL_INVALID_COMMAND_QUEUE;
- }
- if (!is_valid(kernel)) {
- return CL_INVALID_KERNEL;
- }
+ if (!is_valid(command_queue)) {
+ return CL_INVALID_COMMAND_QUEUE;
+ }
+ if (!is_valid(kernel)) {
+ return CL_INVALID_KERNEL;
+ }
- amd::HostQueue* queue = as_amd(command_queue)->asHostQueue();
- if (NULL == queue) {
- return CL_INVALID_COMMAND_QUEUE;
- }
- amd::HostQueue& hostQueue = *queue;
+ amd::HostQueue* queue = as_amd(command_queue)->asHostQueue();
+ if (NULL == queue) {
+ return CL_INVALID_COMMAND_QUEUE;
+ }
+ amd::HostQueue& hostQueue = *queue;
- const amd::Kernel* amdKernel = as_amd(kernel);
- if (&hostQueue.context() != &amdKernel->program().context()) {
- return CL_INVALID_CONTEXT;
- }
+ const amd::Kernel* amdKernel = as_amd(kernel);
+ if (&hostQueue.context() != &amdKernel->program().context()) {
+ return CL_INVALID_CONTEXT;
+ }
- const amd::Device& device = hostQueue.device();
- const device::Kernel* devKernel = amdKernel->getDeviceKernel(device);
- if (devKernel == NULL) {
- return CL_INVALID_PROGRAM_EXECUTABLE;
- }
+ const amd::Device& device = hostQueue.device();
+ const device::Kernel* devKernel = amdKernel->getDeviceKernel(device);
+ if (devKernel == NULL) {
+ return CL_INVALID_PROGRAM_EXECUTABLE;
+ }
- if (amdKernel->parameters().getSvmSystemPointersSupport() == FGS_YES &&
- !(device.info().svmCapabilities_ & CL_DEVICE_SVM_FINE_GRAIN_SYSTEM)) {
- // The user indicated that this kernel will access SVM system pointers,
- // but the device does not support them.
- return CL_INVALID_OPERATION;
- }
+ if (amdKernel->parameters().getSvmSystemPointersSupport() == FGS_YES &&
+ !(device.info().svmCapabilities_ & CL_DEVICE_SVM_FINE_GRAIN_SYSTEM)) {
+ // The user indicated that this kernel will access SVM system pointers,
+ // but the device does not support them.
+ return CL_INVALID_OPERATION;
+ }
- if (work_dim < 1 || work_dim > 3) {
- return CL_INVALID_WORK_DIMENSION;
- }
+ if (work_dim < 1 || work_dim > 3) {
+ return CL_INVALID_WORK_DIMENSION;
+ }
#if !defined(CL_VERSION_1_1)
- if (global_work_offset != NULL) {
- return CL_INVALID_GLOBAL_OFFSET;
- }
-#endif // CL_VERSION
- if (global_work_size == NULL) {
- return CL_INVALID_VALUE;
- }
- else {
- // >32bits global work size is not supported.
- for (cl_uint dim = 0; dim < work_dim; ++dim) {
- if (global_work_size[dim] > static_cast(0xffffffff)) {
- return CL_INVALID_GLOBAL_WORK_SIZE;
- }
- }
+ if (global_work_offset != NULL) {
+ return CL_INVALID_GLOBAL_OFFSET;
+ }
+#endif // CL_VERSION
+ if (global_work_size == NULL) {
+ return CL_INVALID_VALUE;
+ } else {
+ // >32bits global work size is not supported.
+ for (cl_uint dim = 0; dim < work_dim; ++dim) {
+ if (global_work_size[dim] > static_cast(0xffffffff)) {
+ return CL_INVALID_GLOBAL_WORK_SIZE;
+ }
}
+ }
- if (local_work_size == NULL) {
- static size_t zeroes[3] = { 0, 0, 0 };
- local_work_size = zeroes;
+ if (local_work_size == NULL) {
+ static size_t zeroes[3] = {0, 0, 0};
+ local_work_size = zeroes;
+ } else {
+ size_t numWorkItems = 1;
+ for (cl_uint dim = 0; dim < work_dim; ++dim) {
+ if (local_work_size[dim] == 0 ||
+ local_work_size[dim] > device.info().maxWorkItemSizes_[dim]) {
+ return CL_INVALID_WORK_ITEM_SIZE;
+ }
+ if ((local_work_size[dim] != 0) && (devKernel->workGroupInfo()->compileSize_[0] != 0) &&
+ (local_work_size[dim] != devKernel->workGroupInfo()->compileSize_[dim])) {
+ return CL_INVALID_WORK_GROUP_SIZE;
+ }
+ if ((global_work_size[dim] == 0) || (((global_work_size[dim] % local_work_size[dim]) != 0) &&
+ (!device.settings().partialDispatch_ ||
+ devKernel->workGroupInfo()->uniformWorkGroupSize_))) {
+ return CL_INVALID_WORK_GROUP_SIZE;
+ }
+ numWorkItems *= local_work_size[dim];
}
- else {
- size_t numWorkItems = 1;
- for (cl_uint dim = 0; dim < work_dim; ++dim) {
- if (local_work_size[dim] == 0 || local_work_size[dim]
- > device.info().maxWorkItemSizes_[dim]) {
- return CL_INVALID_WORK_ITEM_SIZE;
- }
- if ((local_work_size[dim] != 0) &&
- (devKernel->workGroupInfo()->compileSize_[0] != 0) && (local_work_size[dim] !=
- devKernel->workGroupInfo()->compileSize_[dim])) {
- return CL_INVALID_WORK_GROUP_SIZE;
- }
- if ((global_work_size[dim] == 0) ||
- (((global_work_size[dim] % local_work_size[dim]) != 0) &&
- (!device.settings().partialDispatch_ ||
- devKernel->workGroupInfo()->uniformWorkGroupSize_))) {
- return CL_INVALID_WORK_GROUP_SIZE;
- }
- numWorkItems *= local_work_size[dim];
- }
- if (numWorkItems > devKernel->workGroupInfo()->size_) {
- return CL_INVALID_WORK_GROUP_SIZE;
- }
+ if (numWorkItems > devKernel->workGroupInfo()->size_) {
+ return CL_INVALID_WORK_GROUP_SIZE;
}
+ }
- // Check that all parameters have been defined.
- if (!amdKernel->parameters().check()) {
- return CL_INVALID_KERNEL_ARGS;
- }
+ // Check that all parameters have been defined.
+ if (!amdKernel->parameters().check()) {
+ return CL_INVALID_KERNEL_ARGS;
+ }
- // Check that we do not exceed the amount of available local memory.
- const size_t align = device.info().minDataTypeAlignSize_;
- cl_ulong requiredLocalMemSize =
- static_cast(amdKernel->parameters().localMemSize(align)) +
- amd::alignUp(devKernel->workGroupInfo()->localMemSize_, align);
+ // Check that we do not exceed the amount of available local memory.
+ const size_t align = device.info().minDataTypeAlignSize_;
+ cl_ulong requiredLocalMemSize =
+ static_cast(amdKernel->parameters().localMemSize(align)) +
+ amd::alignUp(devKernel->workGroupInfo()->localMemSize_, align);
- if (requiredLocalMemSize > device.info().localMemSize_) {
- return CL_OUT_OF_RESOURCES;
- }
+ if (requiredLocalMemSize > device.info().localMemSize_) {
+ return CL_OUT_OF_RESOURCES;
+ }
- amd::Command::EventWaitList eventWaitList;
- cl_int err = amd::clSetEventWaitList(eventWaitList,
- hostQueue.context(), num_events_in_wait_list, event_wait_list);
- if (err != CL_SUCCESS) {
- return err;
- }
+ amd::Command::EventWaitList eventWaitList;
+ cl_int err = amd::clSetEventWaitList(eventWaitList, hostQueue.context(), num_events_in_wait_list,
+ event_wait_list);
+ if (err != CL_SUCCESS) {
+ return err;
+ }
- amd::NDRangeContainer ndrange((size_t) work_dim,
- global_work_offset, global_work_size, local_work_size);
- amd::NDRangeKernelCommand* command = new amd::NDRangeKernelCommand(
- hostQueue, eventWaitList, *as_amd(kernel), ndrange);
- if (command == NULL) {
- return CL_OUT_OF_HOST_MEMORY;
- }
- // ndrange is now owned by command. Do not delete it!
+ amd::NDRangeContainer ndrange((size_t)work_dim, global_work_offset, global_work_size,
+ local_work_size);
+ amd::NDRangeKernelCommand* command =
+ new amd::NDRangeKernelCommand(hostQueue, eventWaitList, *as_amd(kernel), ndrange);
+ if (command == NULL) {
+ return CL_OUT_OF_HOST_MEMORY;
+ }
+ // ndrange is now owned by command. Do not delete it!
- // Make sure we have memory for the command execution
- cl_int result = command->validateMemory();
- if (result != CL_SUCCESS) {
- delete command;
- return result;
- }
+ // Make sure we have memory for the command execution
+ cl_int result = command->validateMemory();
+ if (result != CL_SUCCESS) {
+ delete command;
+ return result;
+ }
- command->enqueue();
+ command->enqueue();
- *not_null(event) = as_cl(&command->event());
- if (event == NULL) {
- command->release();
- }
- return CL_SUCCESS;
+ *not_null(event) = as_cl(&command->event());
+ if (event == NULL) {
+ command->release();
+ }
+ return CL_SUCCESS;
}
RUNTIME_EXIT
@@ -352,28 +342,24 @@ RUNTIME_EXIT
*
* \version 1.0r33
*/
-RUNTIME_ENTRY(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 *event))
-{
- static size_t const globalWorkSize[3] = {1, 0, 0};
- static size_t const localWorkSize[3] = {1, 0, 0};
+RUNTIME_ENTRY(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* event)) {
+ static size_t const globalWorkSize[3] = {1, 0, 0};
+ static size_t const localWorkSize[3] = {1, 0, 0};
- if (!is_valid(command_queue)) {
- return CL_INVALID_COMMAND_QUEUE;
- }
+ if (!is_valid(command_queue)) {
+ return CL_INVALID_COMMAND_QUEUE;
+ }
- amd::HostQueue* hostQueue = as_amd(command_queue)->asHostQueue();
- if (NULL == hostQueue) {
- return CL_INVALID_COMMAND_QUEUE;
- }
+ amd::HostQueue* hostQueue = as_amd(command_queue)->asHostQueue();
+ if (NULL == hostQueue) {
+ return CL_INVALID_COMMAND_QUEUE;
+ }
- return hostQueue->dispatch_->clEnqueueNDRangeKernel(
- command_queue, kernel, 1, NULL, globalWorkSize, localWorkSize,
- num_events_in_wait_list, event_wait_list, event);
+ return hostQueue->dispatch_->clEnqueueNDRangeKernel(
+ command_queue, kernel, 1, NULL, globalWorkSize, localWorkSize, num_events_in_wait_list,
+ event_wait_list, event);
}
RUNTIME_EXIT
@@ -442,72 +428,62 @@ RUNTIME_EXIT
*
* \version 1.0r33
*/
-RUNTIME_ENTRY(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 *event))
-{
- *not_null(event) = NULL;
+RUNTIME_ENTRY(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* event)) {
+ *not_null(event) = NULL;
- if (!is_valid(command_queue)) {
- return CL_INVALID_COMMAND_QUEUE;
+ if (!is_valid(command_queue)) {
+ return CL_INVALID_COMMAND_QUEUE;
+ }
+
+ amd::HostQueue* queue = as_amd(command_queue)->asHostQueue();
+ if (NULL == queue) {
+ return CL_INVALID_COMMAND_QUEUE;
+ }
+ amd::HostQueue& hostQueue = *queue;
+
+ const amd::Device& device = hostQueue.device();
+
+ if (!(device.info().executionCapabilities_ & CL_EXEC_NATIVE_KERNEL)) {
+ return CL_INVALID_OPERATION;
+ }
+
+ if (user_func == NULL || (num_mem_objects > 0 && (mem_list == NULL || args_mem_loc == NULL)) ||
+ (num_mem_objects == 0 && (mem_list != NULL || args_mem_loc != NULL)) ||
+ (args == NULL && (cb_args > 0 || num_mem_objects > 0)) || (args != NULL && cb_args == 0)) {
+ return CL_INVALID_VALUE;
+ }
+
+ amd::Command::EventWaitList eventWaitList;
+ cl_int err = amd::clSetEventWaitList(eventWaitList, hostQueue.context(), num_events_in_wait_list,
+ event_wait_list);
+ if (err != CL_SUCCESS) {
+ return err;
+ }
+
+ for (size_t i = 0; i < num_mem_objects; ++i) {
+ cl_mem obj = mem_list[i];
+ if (!is_valid(obj)) {
+ return CL_INVALID_MEM_OBJECT;
}
+ }
- amd::HostQueue* queue = as_amd(command_queue)->asHostQueue();
- if (NULL == queue) {
- return CL_INVALID_COMMAND_QUEUE;
- }
- amd::HostQueue& hostQueue = *queue;
+ amd::NativeFnCommand* command = new amd::NativeFnCommand(
+ hostQueue, eventWaitList, user_func, args, cb_args, num_mem_objects, mem_list, args_mem_loc);
+ if (command == NULL) {
+ return CL_OUT_OF_HOST_MEMORY;
+ }
- const amd::Device& device = hostQueue.device();
+ command->enqueue();
- if (!(device.info().executionCapabilities_ & CL_EXEC_NATIVE_KERNEL)) {
- return CL_INVALID_OPERATION;
- }
-
- if (user_func == NULL
- || (num_mem_objects > 0 && (mem_list == NULL || args_mem_loc == NULL))
- || (num_mem_objects == 0 && (mem_list != NULL || args_mem_loc != NULL))
- || (args == NULL && (cb_args > 0 || num_mem_objects > 0))
- || (args != NULL && cb_args == 0)) {
- return CL_INVALID_VALUE;
- }
-
- amd::Command::EventWaitList eventWaitList;
- cl_int err = amd::clSetEventWaitList(eventWaitList,
- hostQueue.context(), num_events_in_wait_list, event_wait_list);
- if (err != CL_SUCCESS){
- return err;
- }
-
- for (size_t i = 0; i < num_mem_objects; ++i) {
- cl_mem obj = mem_list[i];
- if (!is_valid(obj)) {
- return CL_INVALID_MEM_OBJECT;
- }
- }
-
- amd::NativeFnCommand* command = new amd::NativeFnCommand(
- hostQueue, eventWaitList,
- user_func, args, cb_args, num_mem_objects, mem_list, args_mem_loc);
- if (command == NULL) {
- return CL_OUT_OF_HOST_MEMORY;
- }
-
- command->enqueue();
-
- *not_null(event) = as_cl(&command->event());
- if (event == NULL) {
- command->release();
- }
- return CL_SUCCESS;
+ *not_null(event) = as_cl(&command->event());
+ if (event == NULL) {
+ command->release();
+ }
+ return CL_SUCCESS;
}
RUNTIME_EXIT
@@ -581,31 +557,28 @@ RUNTIME_EXIT
*
* \version 1.0r33
*/
-RUNTIME_ENTRY(cl_int, clEnqueueMarker, (
- cl_command_queue command_queue,
- cl_event *event))
-{
- if (!is_valid(command_queue)) {
- return CL_INVALID_COMMAND_QUEUE;
- }
+RUNTIME_ENTRY(cl_int, clEnqueueMarker, (cl_command_queue command_queue, cl_event* event)) {
+ if (!is_valid(command_queue)) {
+ return CL_INVALID_COMMAND_QUEUE;
+ }
- amd::HostQueue* hostQueue = as_amd(command_queue)->asHostQueue();
- if (NULL == hostQueue) {
- return CL_INVALID_COMMAND_QUEUE;
- }
+ amd::HostQueue* hostQueue = as_amd(command_queue)->asHostQueue();
+ if (NULL == hostQueue) {
+ return CL_INVALID_COMMAND_QUEUE;
+ }
- amd::Command* command = new amd::Marker(*hostQueue, true);
- if (command == NULL) {
- return CL_OUT_OF_HOST_MEMORY;
- }
+ amd::Command* command = new amd::Marker(*hostQueue, true);
+ if (command == NULL) {
+ return CL_OUT_OF_HOST_MEMORY;
+ }
- command->enqueue();
+ command->enqueue();
- *not_null(event) = as_cl(&command->event());
- if (event == NULL) {
- command->release();
- }
- return CL_SUCCESS;
+ *not_null(event) = as_cl(&command->event());
+ if (event == NULL) {
+ command->release();
+ }
+ return CL_SUCCESS;
}
RUNTIME_EXIT
@@ -653,39 +626,36 @@ RUNTIME_EXIT
*
* \version 1.2r07
*/
-RUNTIME_ENTRY(cl_int, clEnqueueMarkerWithWaitList, (
- cl_command_queue command_queue,
- 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;
- }
+RUNTIME_ENTRY(cl_int, clEnqueueMarkerWithWaitList,
+ (cl_command_queue command_queue, 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;
+ }
- amd::HostQueue* hostQueue = as_amd(command_queue)->asHostQueue();
- if (NULL == hostQueue) {
- return CL_INVALID_COMMAND_QUEUE;
- }
+ amd::HostQueue* hostQueue = as_amd(command_queue)->asHostQueue();
+ if (NULL == hostQueue) {
+ return CL_INVALID_COMMAND_QUEUE;
+ }
- amd::Command::EventWaitList eventWaitList;
- cl_int err = amd::clSetEventWaitList(eventWaitList,
- hostQueue->context(), num_events_in_wait_list, event_wait_list);
- if (err != CL_SUCCESS) {
- return err;
- }
+ amd::Command::EventWaitList eventWaitList;
+ cl_int err = amd::clSetEventWaitList(eventWaitList, hostQueue->context(), num_events_in_wait_list,
+ event_wait_list);
+ if (err != CL_SUCCESS) {
+ return err;
+ }
- amd::Command* command = new amd::Marker(*hostQueue, true, eventWaitList);
- if (command == NULL) {
- return CL_OUT_OF_HOST_MEMORY;
- }
- command->enqueue();
+ amd::Command* command = new amd::Marker(*hostQueue, true, eventWaitList);
+ if (command == NULL) {
+ return CL_OUT_OF_HOST_MEMORY;
+ }
+ command->enqueue();
- *not_null(event) = as_cl(&command->event());
- if (event == NULL) {
- command->release();
- }
- return CL_SUCCESS;
+ *not_null(event) = as_cl(&command->event());
+ if (event == NULL) {
+ command->release();
+ }
+ return CL_SUCCESS;
}
RUNTIME_EXIT
@@ -719,35 +689,31 @@ RUNTIME_EXIT
*
* \version 1.0r33
*/
-RUNTIME_ENTRY(cl_int, clEnqueueWaitForEvents, (
- cl_command_queue command_queue,
- cl_uint num_events,
- const cl_event *event_list))
-{
- if (!is_valid(command_queue)) {
- return CL_INVALID_COMMAND_QUEUE;
- }
- amd::HostQueue* queue = as_amd(command_queue)->asHostQueue();
- if (NULL == queue) {
- return CL_INVALID_COMMAND_QUEUE;
- }
- amd::HostQueue& hostQueue = *queue;
+RUNTIME_ENTRY(cl_int, clEnqueueWaitForEvents,
+ (cl_command_queue command_queue, cl_uint num_events, const cl_event* event_list)) {
+ if (!is_valid(command_queue)) {
+ return CL_INVALID_COMMAND_QUEUE;
+ }
+ amd::HostQueue* queue = as_amd(command_queue)->asHostQueue();
+ if (NULL == queue) {
+ return CL_INVALID_COMMAND_QUEUE;
+ }
+ amd::HostQueue& hostQueue = *queue;
- amd::Command::EventWaitList eventWaitList;
- cl_int err = amd::clSetEventWaitList(eventWaitList,
- hostQueue.context(), num_events, event_list);
- if (err != CL_SUCCESS){
- return err;
- }
+ amd::Command::EventWaitList eventWaitList;
+ cl_int err = amd::clSetEventWaitList(eventWaitList, hostQueue.context(), num_events, event_list);
+ if (err != CL_SUCCESS) {
+ return err;
+ }
- amd::Command* command = new amd::Marker(hostQueue, false, eventWaitList);
- if (command == NULL) {
- return CL_OUT_OF_HOST_MEMORY;
- }
+ amd::Command* command = new amd::Marker(hostQueue, false, eventWaitList);
+ if (command == NULL) {
+ return CL_OUT_OF_HOST_MEMORY;
+ }
- command->enqueue();
- command->release();
- return CL_SUCCESS;
+ command->enqueue();
+ command->release();
+ return CL_SUCCESS;
}
RUNTIME_EXIT
@@ -765,10 +731,9 @@ RUNTIME_EXIT
*
* \version 1.0r33
*/
-RUNTIME_ENTRY(cl_int, clEnqueueBarrier, (cl_command_queue command_queue))
-{
- //! @todo: Unimplemented();
- return CL_SUCCESS;
+RUNTIME_ENTRY(cl_int, clEnqueueBarrier, (cl_command_queue command_queue)) {
+ //! @todo: Unimplemented();
+ return CL_SUCCESS;
}
RUNTIME_EXIT
@@ -817,41 +782,38 @@ RUNTIME_EXIT
*
* \version 1.2r07
*/
-RUNTIME_ENTRY(cl_int, clEnqueueBarrierWithWaitList, (
- cl_command_queue command_queue,
- 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;
- }
+RUNTIME_ENTRY(cl_int, clEnqueueBarrierWithWaitList,
+ (cl_command_queue command_queue, 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;
+ }
- amd::HostQueue* hostQueue = as_amd(command_queue)->asHostQueue();
- if (NULL == hostQueue) {
- return CL_INVALID_COMMAND_QUEUE;
- }
+ amd::HostQueue* hostQueue = as_amd(command_queue)->asHostQueue();
+ if (NULL == hostQueue) {
+ return CL_INVALID_COMMAND_QUEUE;
+ }
- amd::Command::EventWaitList eventWaitList;
- cl_int err = amd::clSetEventWaitList(eventWaitList,
- hostQueue->context(), num_events_in_wait_list, event_wait_list);
- if (err != CL_SUCCESS) {
- return err;
- }
+ amd::Command::EventWaitList eventWaitList;
+ cl_int err = amd::clSetEventWaitList(eventWaitList, hostQueue->context(), num_events_in_wait_list,
+ event_wait_list);
+ if (err != CL_SUCCESS) {
+ return err;
+ }
- //!@note: with the current runtime architecture and in-order execution
- //! barrier and marker should be the same operation
- amd::Command* command = new amd::Marker(*hostQueue, true, eventWaitList);
- if (command == NULL) {
- return CL_OUT_OF_HOST_MEMORY;
- }
- command->enqueue();
+ //!@note: with the current runtime architecture and in-order execution
+ //! barrier and marker should be the same operation
+ amd::Command* command = new amd::Marker(*hostQueue, true, eventWaitList);
+ if (command == NULL) {
+ return CL_OUT_OF_HOST_MEMORY;
+ }
+ command->enqueue();
- *not_null(event) = as_cl(&command->event());
- if (event == NULL) {
- command->release();
- }
- return CL_SUCCESS;
+ *not_null(event) = as_cl(&command->event());
+ if (event == NULL) {
+ command->release();
+ }
+ return CL_SUCCESS;
}
RUNTIME_EXIT
@@ -914,55 +876,51 @@ RUNTIME_EXIT
*
* \version 1.0r33
*/
-RUNTIME_ENTRY(cl_int, clGetEventProfilingInfo, (
- cl_event event,
- cl_profiling_info param_name,
- size_t param_value_size,
- void *param_value,
- size_t *param_value_size_ret))
-{
- if (!is_valid(event)) {
- return CL_INVALID_EVENT;
- }
+RUNTIME_ENTRY(cl_int, clGetEventProfilingInfo,
+ (cl_event event, cl_profiling_info param_name, size_t param_value_size,
+ void* param_value, size_t* param_value_size_ret)) {
+ if (!is_valid(event)) {
+ return CL_INVALID_EVENT;
+ }
- if (!as_amd(event)->profilingInfo().enabled_) {
- return CL_PROFILING_INFO_NOT_AVAILABLE;
- }
+ if (!as_amd(event)->profilingInfo().enabled_) {
+ return CL_PROFILING_INFO_NOT_AVAILABLE;
+ }
- if (param_value != NULL && param_value_size < sizeof(cl_ulong)) {
+ if (param_value != NULL && param_value_size < sizeof(cl_ulong)) {
+ return CL_INVALID_VALUE;
+ }
+
+ *not_null(param_value_size_ret) = sizeof(cl_ulong);
+ if (param_value != NULL) {
+ cl_ulong value = 0;
+ switch (param_name) {
+ case CL_PROFILING_COMMAND_END:
+ value = as_amd(event)->profilingInfo().end_;
+ break;
+
+ case CL_PROFILING_COMMAND_START:
+ value = as_amd(event)->profilingInfo().start_;
+ break;
+
+ case CL_PROFILING_COMMAND_SUBMIT:
+ value = as_amd(event)->profilingInfo().submitted_;
+ break;
+
+ case CL_PROFILING_COMMAND_QUEUED:
+ value = as_amd(event)->profilingInfo().queued_;
+ break;
+
+ default:
return CL_INVALID_VALUE;
}
-
- *not_null(param_value_size_ret) = sizeof(cl_ulong);
- if (param_value != NULL) {
- cl_ulong value = 0;
- switch (param_name) {
- case CL_PROFILING_COMMAND_END:
- value = as_amd(event)->profilingInfo().end_;
- break;
-
- case CL_PROFILING_COMMAND_START:
- value = as_amd(event)->profilingInfo().start_;
- break;
-
- case CL_PROFILING_COMMAND_SUBMIT:
- value = as_amd(event)->profilingInfo().submitted_;
- break;
-
- case CL_PROFILING_COMMAND_QUEUED:
- value = as_amd(event)->profilingInfo().queued_;
- break;
-
- default:
- return CL_INVALID_VALUE;
- }
- if (value == 0) {
- return CL_PROFILING_INFO_NOT_AVAILABLE;
- }
- *(cl_ulong*)param_value = value;
+ if (value == 0) {
+ return CL_PROFILING_INFO_NOT_AVAILABLE;
}
+ *(cl_ulong*)param_value = value;
+ }
- return CL_SUCCESS;
+ return CL_SUCCESS;
}
RUNTIME_EXIT
@@ -992,26 +950,25 @@ RUNTIME_EXIT
*
* \version 1.0r33
*/
-RUNTIME_ENTRY(cl_int, clFlush, (cl_command_queue command_queue))
-{
- if (!is_valid(command_queue)) {
- return CL_INVALID_COMMAND_QUEUE;
- }
+RUNTIME_ENTRY(cl_int, clFlush, (cl_command_queue command_queue)) {
+ if (!is_valid(command_queue)) {
+ return CL_INVALID_COMMAND_QUEUE;
+ }
- amd::HostQueue* hostQueue = as_amd(command_queue)->asHostQueue();
- if (NULL == hostQueue) {
- return CL_INVALID_COMMAND_QUEUE;
- }
+ amd::HostQueue* hostQueue = as_amd(command_queue)->asHostQueue();
+ if (NULL == hostQueue) {
+ return CL_INVALID_COMMAND_QUEUE;
+ }
- amd::Command* command = new amd::Marker(*hostQueue, false);
- if (command == NULL) {
- return CL_OUT_OF_HOST_MEMORY;
- }
+ amd::Command* command = new amd::Marker(*hostQueue, false);
+ if (command == NULL) {
+ return CL_OUT_OF_HOST_MEMORY;
+ }
- command->enqueue();
- command->release();
+ command->enqueue();
+ command->release();
- return CL_SUCCESS;
+ return CL_SUCCESS;
}
RUNTIME_EXIT
@@ -1029,20 +986,19 @@ RUNTIME_EXIT
*
* \version 1.0r33
*/
-RUNTIME_ENTRY(cl_int, clFinish, (cl_command_queue command_queue))
-{
- if (!is_valid(command_queue)) {
- return CL_INVALID_COMMAND_QUEUE;
- }
+RUNTIME_ENTRY(cl_int, clFinish, (cl_command_queue command_queue)) {
+ if (!is_valid(command_queue)) {
+ return CL_INVALID_COMMAND_QUEUE;
+ }
- amd::HostQueue* hostQueue = as_amd(command_queue)->asHostQueue();
- if (NULL == hostQueue) {
- return CL_INVALID_COMMAND_QUEUE;
- }
+ amd::HostQueue* hostQueue = as_amd(command_queue)->asHostQueue();
+ if (NULL == hostQueue) {
+ return CL_INVALID_COMMAND_QUEUE;
+ }
- hostQueue->finish();
+ hostQueue->finish();
- return CL_SUCCESS;
+ return CL_SUCCESS;
}
RUNTIME_EXIT
diff --git a/opencl/api/opencl/amdocl/cl_gl.cpp b/opencl/api/opencl/amdocl/cl_gl.cpp
index 06c11bb601..1ff3289496 100644
--- a/opencl/api/opencl/amdocl/cl_gl.cpp
+++ b/opencl/api/opencl/amdocl/cl_gl.cpp
@@ -12,7 +12,7 @@
#include "cl_d3d9_amd.hpp"
#include "cl_d3d10_amd.hpp"
#include "cl_d3d11_amd.hpp"
-#endif //_WIN32
+#endif //_WIN32
#include
#include
@@ -27,8 +27,8 @@
#include "device/device.hpp"
/* The pixel internal format for DOPP texture defined in gl_enum.h */
-#define GL_BGR8_ATI 0x8083
-#define GL_BGRA8_ATI 0x8088
+#define GL_BGR8_ATI 0x8083
+#define GL_BGRA8_ATI 0x8088
#include
#include
@@ -102,29 +102,25 @@
*
* \version 1.0r29
*/
-RUNTIME_ENTRY_RET(cl_mem, clCreateFromGLBuffer, (
- cl_context context,
- cl_mem_flags flags,
- GLuint bufobj,
- cl_int* errcode_ret))
-{
- cl_mem clMemObj = NULL;
+RUNTIME_ENTRY_RET(cl_mem, clCreateFromGLBuffer,
+ (cl_context context, cl_mem_flags flags, GLuint bufobj, cl_int* errcode_ret)) {
+ cl_mem clMemObj = NULL;
- if (!is_valid(context)) {
- *not_null(errcode_ret) = CL_INVALID_CONTEXT;
- LogWarning("invalid parameter \"context\"");
- return clMemObj;
- }
+ if (!is_valid(context)) {
+ *not_null(errcode_ret) = CL_INVALID_CONTEXT;
+ LogWarning("invalid parameter \"context\"");
+ return clMemObj;
+ }
- if (!(((flags & CL_MEM_READ_ONLY) == CL_MEM_READ_ONLY)
- || ((flags & CL_MEM_WRITE_ONLY) == CL_MEM_WRITE_ONLY)
- || ((flags & CL_MEM_READ_WRITE) == CL_MEM_READ_WRITE))) {
- *not_null(errcode_ret) = CL_INVALID_VALUE;
- LogWarning("invalid parameter \"flags\"");
- return clMemObj;
- }
+ if (!(((flags & CL_MEM_READ_ONLY) == CL_MEM_READ_ONLY) ||
+ ((flags & CL_MEM_WRITE_ONLY) == CL_MEM_WRITE_ONLY) ||
+ ((flags & CL_MEM_READ_WRITE) == CL_MEM_READ_WRITE))) {
+ *not_null(errcode_ret) = CL_INVALID_VALUE;
+ LogWarning("invalid parameter \"flags\"");
+ return clMemObj;
+ }
- return(amd::clCreateFromGLBufferAMD(*as_amd(context), flags, bufobj, errcode_ret));
+ return (amd::clCreateFromGLBufferAMD(*as_amd(context), flags, bufobj, errcode_ret));
}
RUNTIME_EXIT
@@ -181,47 +177,42 @@ RUNTIME_EXIT
*
* \version 1.2r07
*/
-RUNTIME_ENTRY_RET(cl_mem, clCreateFromGLTexture, (
- cl_context context,
- cl_mem_flags flags,
- GLenum texture_target,
- GLint miplevel,
- GLuint texture,
- cl_int* errcode_ret))
-{
- cl_mem clMemObj = NULL;
+RUNTIME_ENTRY_RET(cl_mem, clCreateFromGLTexture,
+ (cl_context context, cl_mem_flags flags, GLenum texture_target, GLint miplevel,
+ GLuint texture, cl_int* errcode_ret)) {
+ cl_mem clMemObj = NULL;
- if (!is_valid(context)) {
- *not_null(errcode_ret) = CL_INVALID_CONTEXT;
- LogWarning("invalid parameter \"context\"");
- return clMemObj;
- }
+ if (!is_valid(context)) {
+ *not_null(errcode_ret) = CL_INVALID_CONTEXT;
+ LogWarning("invalid parameter \"context\"");
+ return clMemObj;
+ }
- if (!(((flags & CL_MEM_READ_ONLY) == CL_MEM_READ_ONLY)
- || ((flags & CL_MEM_WRITE_ONLY) == CL_MEM_WRITE_ONLY)
- || ((flags & CL_MEM_READ_WRITE) == CL_MEM_READ_WRITE))) {
- *not_null(errcode_ret) = CL_INVALID_VALUE;
- LogWarning("invalid parameter \"flags\"");
- return clMemObj;
- }
+ if (!(((flags & CL_MEM_READ_ONLY) == CL_MEM_READ_ONLY) ||
+ ((flags & CL_MEM_WRITE_ONLY) == CL_MEM_WRITE_ONLY) ||
+ ((flags & CL_MEM_READ_WRITE) == CL_MEM_READ_WRITE))) {
+ *not_null(errcode_ret) = CL_INVALID_VALUE;
+ LogWarning("invalid parameter \"flags\"");
+ return clMemObj;
+ }
- const std::vector& devices = as_amd(context)->devices();
- bool supportPass = false;
- bool sizePass = false;
- std::vector::const_iterator it;
- for(it = devices.begin(); it != devices.end(); ++it) {
- if ((*it)->info().imageSupport_) {
- supportPass = true;
- }
- }
- if (!supportPass) {
- *not_null(errcode_ret) = CL_INVALID_OPERATION;
- LogWarning("there are no devices in context to support images");
- return static_cast(0);
+ const std::vector& devices = as_amd(context)->devices();
+ bool supportPass = false;
+ bool sizePass = false;
+ std::vector::const_iterator it;
+ for (it = devices.begin(); it != devices.end(); ++it) {
+ if ((*it)->info().imageSupport_) {
+ supportPass = true;
}
+ }
+ if (!supportPass) {
+ *not_null(errcode_ret) = CL_INVALID_OPERATION;
+ LogWarning("there are no devices in context to support images");
+ return static_cast(0);
+ }
- return amd::clCreateFromGLTextureAMD(*as_amd(context), flags,
- texture_target, miplevel, texture, errcode_ret);
+ return amd::clCreateFromGLTextureAMD(*as_amd(context), flags, texture_target, miplevel, texture,
+ errcode_ret);
}
RUNTIME_EXIT
@@ -272,47 +263,42 @@ RUNTIME_EXIT
*
* \version 1.0r29
*/
-RUNTIME_ENTRY_RET(cl_mem, clCreateFromGLTexture2D, (
- cl_context context,
- cl_mem_flags flags,
- GLenum target,
- GLint miplevel,
- GLuint texture,
- cl_int* errcode_ret))
-{
- cl_mem clMemObj = NULL;
+RUNTIME_ENTRY_RET(cl_mem, clCreateFromGLTexture2D,
+ (cl_context context, cl_mem_flags flags, GLenum target, GLint miplevel,
+ GLuint texture, cl_int* errcode_ret)) {
+ cl_mem clMemObj = NULL;
- if (!is_valid(context)) {
- *not_null(errcode_ret) = CL_INVALID_CONTEXT;
- LogWarning("invalid parameter \"context\"");
- return clMemObj;
- }
+ if (!is_valid(context)) {
+ *not_null(errcode_ret) = CL_INVALID_CONTEXT;
+ LogWarning("invalid parameter \"context\"");
+ return clMemObj;
+ }
- if (!(((flags & CL_MEM_READ_ONLY) == CL_MEM_READ_ONLY)
- || ((flags & CL_MEM_WRITE_ONLY) == CL_MEM_WRITE_ONLY)
- || ((flags & CL_MEM_READ_WRITE) == CL_MEM_READ_WRITE))) {
- *not_null(errcode_ret) = CL_INVALID_VALUE;
- LogWarning("invalid parameter \"flags\"");
- return clMemObj;
- }
+ if (!(((flags & CL_MEM_READ_ONLY) == CL_MEM_READ_ONLY) ||
+ ((flags & CL_MEM_WRITE_ONLY) == CL_MEM_WRITE_ONLY) ||
+ ((flags & CL_MEM_READ_WRITE) == CL_MEM_READ_WRITE))) {
+ *not_null(errcode_ret) = CL_INVALID_VALUE;
+ LogWarning("invalid parameter \"flags\"");
+ return clMemObj;
+ }
- const std::vector& devices = as_amd(context)->devices();
- bool supportPass = false;
- bool sizePass = false;
- std::vector::const_iterator it;
- for(it = devices.begin(); it != devices.end(); ++it) {
- if ((*it)->info().imageSupport_) {
- supportPass = true;
- }
- }
- if (!supportPass) {
- *not_null(errcode_ret) = CL_INVALID_OPERATION;
- LogWarning("there are no devices in context to support images");
- return static_cast(0);
+ const std::vector& devices = as_amd(context)->devices();
+ bool supportPass = false;
+ bool sizePass = false;
+ std::vector::const_iterator it;
+ for (it = devices.begin(); it != devices.end(); ++it) {
+ if ((*it)->info().imageSupport_) {
+ supportPass = true;
}
+ }
+ if (!supportPass) {
+ *not_null(errcode_ret) = CL_INVALID_OPERATION;
+ LogWarning("there are no devices in context to support images");
+ return static_cast(0);
+ }
- return amd::clCreateFromGLTextureAMD(*as_amd(context), flags, target,
- miplevel, texture, errcode_ret);
+ return amd::clCreateFromGLTextureAMD(*as_amd(context), flags, target, miplevel, texture,
+ errcode_ret);
}
RUNTIME_EXIT
@@ -358,47 +344,42 @@ RUNTIME_EXIT
*
* \version 1.0r29
*/
-RUNTIME_ENTRY_RET(cl_mem, clCreateFromGLTexture3D, (
- cl_context context,
- cl_mem_flags flags,
- GLenum target,
- GLint miplevel,
- GLuint texture,
- cl_int* errcode_ret))
-{
- cl_mem clMemObj = NULL;
+RUNTIME_ENTRY_RET(cl_mem, clCreateFromGLTexture3D,
+ (cl_context context, cl_mem_flags flags, GLenum target, GLint miplevel,
+ GLuint texture, cl_int* errcode_ret)) {
+ cl_mem clMemObj = NULL;
- if (!is_valid(context)) {
- *not_null(errcode_ret) = CL_INVALID_CONTEXT;
- LogWarning("invalid parameter \"context\"");
- return clMemObj;
- }
+ if (!is_valid(context)) {
+ *not_null(errcode_ret) = CL_INVALID_CONTEXT;
+ LogWarning("invalid parameter \"context\"");
+ return clMemObj;
+ }
- if (!(((flags & CL_MEM_READ_ONLY) == CL_MEM_READ_ONLY)
- || ((flags & CL_MEM_WRITE_ONLY) == CL_MEM_WRITE_ONLY)
- || ((flags & CL_MEM_READ_WRITE) == CL_MEM_READ_WRITE))) {
- *not_null(errcode_ret) = CL_INVALID_VALUE;
- LogWarning("invalid parameter \"flags\"");
- return clMemObj;
- }
+ if (!(((flags & CL_MEM_READ_ONLY) == CL_MEM_READ_ONLY) ||
+ ((flags & CL_MEM_WRITE_ONLY) == CL_MEM_WRITE_ONLY) ||
+ ((flags & CL_MEM_READ_WRITE) == CL_MEM_READ_WRITE))) {
+ *not_null(errcode_ret) = CL_INVALID_VALUE;
+ LogWarning("invalid parameter \"flags\"");
+ return clMemObj;
+ }
- const std::vector& devices = as_amd(context)->devices();
- bool supportPass = false;
- bool sizePass = false;
- std::vector::const_iterator it;
- for(it = devices.begin(); it != devices.end(); ++it) {
- if ((*it)->info().imageSupport_) {
- supportPass = true;
- }
- }
- if (!supportPass) {
- *not_null(errcode_ret) = CL_INVALID_OPERATION;
- LogWarning("there are no devices in context to support images");
- return static_cast(0);
+ const std::vector