1/******************************************************************************* 2 * Copyright (c) 2008-2020 The Khronos Group Inc. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 ******************************************************************************/ 16 17#ifndef __OPENCL_CL_D3D11_H 18#define __OPENCL_CL_D3D11_H 19 20#if defined(_MSC_VER) 21#if _MSC_VER >=1500 22#pragma warning( push ) 23#pragma warning( disable : 4201 ) 24#pragma warning( disable : 5105 ) 25#endif 26#endif 27#include <d3d11.h> 28#if defined(_MSC_VER) 29#if _MSC_VER >=1500 30#pragma warning( pop ) 31#endif 32#endif 33#include <CL/cl.h> 34#include <CL/cl_platform.h> 35 36#ifdef __cplusplus 37extern "C" { 38#endif 39 40/****************************************************************************** 41 * cl_khr_d3d11_sharing */ 42#define cl_khr_d3d11_sharing 1 43 44typedef cl_uint cl_d3d11_device_source_khr; 45typedef cl_uint cl_d3d11_device_set_khr; 46 47/******************************************************************************/ 48 49/* Error Codes */ 50#define CL_INVALID_D3D11_DEVICE_KHR -1006 51#define CL_INVALID_D3D11_RESOURCE_KHR -1007 52#define CL_D3D11_RESOURCE_ALREADY_ACQUIRED_KHR -1008 53#define CL_D3D11_RESOURCE_NOT_ACQUIRED_KHR -1009 54 55/* cl_d3d11_device_source */ 56#define CL_D3D11_DEVICE_KHR 0x4019 57#define CL_D3D11_DXGI_ADAPTER_KHR 0x401A 58 59/* cl_d3d11_device_set */ 60#define CL_PREFERRED_DEVICES_FOR_D3D11_KHR 0x401B 61#define CL_ALL_DEVICES_FOR_D3D11_KHR 0x401C 62 63/* cl_context_info */ 64#define CL_CONTEXT_D3D11_DEVICE_KHR 0x401D 65#define CL_CONTEXT_D3D11_PREFER_SHARED_RESOURCES_KHR 0x402D 66 67/* cl_mem_info */ 68#define CL_MEM_D3D11_RESOURCE_KHR 0x401E 69 70/* cl_image_info */ 71#define CL_IMAGE_D3D11_SUBRESOURCE_KHR 0x401F 72 73/* cl_command_type */ 74#define CL_COMMAND_ACQUIRE_D3D11_OBJECTS_KHR 0x4020 75#define CL_COMMAND_RELEASE_D3D11_OBJECTS_KHR 0x4021 76 77/******************************************************************************/ 78 79typedef cl_int (CL_API_CALL *clGetDeviceIDsFromD3D11KHR_fn)( 80 cl_platform_id platform, 81 cl_d3d11_device_source_khr d3d_device_source, 82 void * d3d_object, 83 cl_d3d11_device_set_khr d3d_device_set, 84 cl_uint num_entries, 85 cl_device_id * devices, 86 cl_uint * num_devices) CL_API_SUFFIX__VERSION_1_2; 87 88typedef cl_mem (CL_API_CALL *clCreateFromD3D11BufferKHR_fn)( 89 cl_context context, 90 cl_mem_flags flags, 91 ID3D11Buffer * resource, 92 cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2; 93 94typedef cl_mem (CL_API_CALL *clCreateFromD3D11Texture2DKHR_fn)( 95 cl_context context, 96 cl_mem_flags flags, 97 ID3D11Texture2D * resource, 98 UINT subresource, 99 cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2; 100 101typedef cl_mem (CL_API_CALL *clCreateFromD3D11Texture3DKHR_fn)( 102 cl_context context, 103 cl_mem_flags flags, 104 ID3D11Texture3D * resource, 105 UINT subresource, 106 cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2; 107 108typedef cl_int (CL_API_CALL *clEnqueueAcquireD3D11ObjectsKHR_fn)( 109 cl_command_queue command_queue, 110 cl_uint num_objects, 111 const cl_mem * mem_objects, 112 cl_uint num_events_in_wait_list, 113 const cl_event * event_wait_list, 114 cl_event * event) CL_API_SUFFIX__VERSION_1_2; 115 116typedef cl_int (CL_API_CALL *clEnqueueReleaseD3D11ObjectsKHR_fn)( 117 cl_command_queue command_queue, 118 cl_uint num_objects, 119 const cl_mem * mem_objects, 120 cl_uint num_events_in_wait_list, 121 const cl_event * event_wait_list, 122 cl_event * event) CL_API_SUFFIX__VERSION_1_2; 123 124/*************************************************************** 125* cl_intel_sharing_format_query_d3d11 126***************************************************************/ 127#define cl_intel_sharing_format_query_d3d11 1 128 129/* when cl_khr_d3d11_sharing is supported */ 130 131extern CL_API_ENTRY cl_int CL_API_CALL 132clGetSupportedD3D11TextureFormatsINTEL( 133 cl_context context, 134 cl_mem_flags flags, 135 cl_mem_object_type image_type, 136 cl_uint plane, 137 cl_uint num_entries, 138 DXGI_FORMAT* d3d11_formats, 139 cl_uint* num_texture_formats) ; 140 141typedef cl_int (CL_API_CALL * 142clGetSupportedD3D11TextureFormatsINTEL_fn)( 143 cl_context context, 144 cl_mem_flags flags, 145 cl_mem_object_type image_type, 146 cl_uint plane, 147 cl_uint num_entries, 148 DXGI_FORMAT* d3d11_formats, 149 cl_uint* num_texture_formats) ; 150 151#ifdef __cplusplus 152} 153#endif 154 155#endif /* __OPENCL_CL_D3D11_H */ 156 157