| |
| <para> |
| General information about sharing memory objects with Direct3D 10 follows. |
| </para> |
| |
| <para> |
| <!-- ext. spec p. 66, section 9.9.1 --> The goal of this extension is to provide |
| interoperability between OpenCL and Direct3D 10. This is designed to function |
| analogously to the OpenGL interoperability. If this extension is supported |
| by an implementation, the string "cl_khr_d3d10_sharing" will be present in the |
| <constant>CL_PLATFORM_EXTENSIONS</constant> or <constant>CL_DEVICE_EXTENSIONS</constant> |
| string described in the table of allowed values for <varname>param_name</varname> for |
| <citerefentry><refentrytitle>clGetDeviceInfo</refentrytitle></citerefentry>. |
| </para> |
| |
| <para> |
| <!-- ext. spec p. 66, section 9.9.1 --> As currently proposed, the interfaces for this |
| extension would be provided in cl_d3d10.h. |
| </para> |
| |
| <para> |
| <!-- ext. spec p. 70, section 9.9.7 --> This section discusses OpenCL functions that allow |
| applications to use Direct3D 10 resources as OpenCL memory objects. This allows efficient |
| sharing of data between OpenCL and Direct3D 10. The OpenCL API may be used to execute |
| kernels that read and/or write memory objects that are also Direct3D 10 resources. An |
| OpenCL image object may be created from a Direct3D 10 texture resource. An OpenCL buffer |
| object may be created from a Direct3D 10 buffer resource. OpenCL memory objects may be |
| created from Direct3D 10 objects if and only if the OpenCL context has been created from |
| a Direct3D 10 device. |
| </para> |
| |
| <bridgehead>Lifetime of Shared Objects</bridgehead> |
| |
| <para> |
| <!-- ext. spec p. 72, section 9.9.7.2 --> An OpenCL memory object created from a Direct3D |
| 10 resource remains valid as long as the corresponding Direct3D 10 resource has not been |
| deleted. If the Direct3D 10 resource is deleted through the Direct3D 10 API, subsequent |
| use of the OpenCL memory object will result in undefined behavior, including but not |
| limited to possible OpenCL errors, data corruption, and program termination. |
| </para> |
| |
| <para> |
| <!-- ext. spec p. 72, section 9.9.7.2 --> The successful creation of a |
| cl_context against a Direct3D 10 device specified via the context create parameter |
| <constant>CL_CONTEXT_D3D10_DEVICE_KHR</constant> will increment the internal Direct3D |
| reference count on the specified Direct3D 10 device. The internal Direct3D reference |
| count on that Direct3D 10 device will be decremented when the OpenCL reference count on |
| the returned OpenCL context drops to zero. |
| </para> |
| |
| <para> |
| <!-- ext. spec p. 72, section 9.9.7.2 --> The OpenCL context and corresponding command-queues |
| are dependent on the existence of the Direct3D 10 device from which the OpenCL context |
| was created. If the Direct3D 10 device is deleted through the Direct3D 10 API, subsequent |
| use of the OpenCL context will result in undefined behavior, including but not limited |
| to possible OpenCL errors, data corruption, and program termination. |
| </para> |
| |
| <!-- 19-Oct-2011 --> |
| |