| |
| <para> |
| General information about sharing memory objects with Direct3D 10 follows. |
| </para> |
| |
| <!-- section 9.8.1 Overview --> |
| <para> |
| The goal of this extension is to provide interoperability between |
| OpenCL and Direct3D 10. This is designed to function analogously |
| to the <citerefentry href="cl_khr_gl_sharing"><refentrytitle>OpenGL |
| interoperability</refentrytitle></citerefentry> as defined in sections 9.7 and 9.8. If |
| this extension is supported by an implementation, the string "cl_khr_d3d10_sharing" |
| will be present in the <constant>CL_PLATFORM_EXTENSIONS</constant> |
| (see <citerefentry><refentrytitle>clGetPlatformInfo</refentrytitle></citerefentry>) |
| or <constant>CL_DEVICE_EXTENSIONS</constant> |
| (see <citerefentry><refentrytitle>clGetDeviceInfo</refentrytitle></citerefentry>). |
| </para> |
| |
| <para> |
| As currently proposed the interfaces for this extension would be provided in |
| <code>cl_d3d10.h</code>. |
| </para> |
| |
| <para> |
| <!-- 9.8.7 Sharing Memory Objects with Direct3D 10 --> |
| The OpenCL functions enabled by the <function>cl_khr_d3d10_sharing</function> extension |
| 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> |
| |
| <!-- 9.8.7.2 Lifetime of Shared Objects --> |
| <bridgehead>Lifetime of Shared [D3D10] Objects</bridgehead> |
| |
| <para> |
| 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> |
| 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> |
| 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> |
| |
| <!-- 25-Dec-2013, rev. 19 --> |
| |