Name String cl_intel_d3d11_nv12_media_sharing Contributors Krzysztof Laskowski, Intel Ben Ashbaugh, Intel Eric L Palmer, Intel Contact Krzysztof Laskowski, Intel (krzysztof.laskowski 'at' intel.com) Version Version 4, June 25, 2014 Number OpenCL Extension #31 Status Complete Extension Type OpenCL platform extension Dependencies OpenCL 1.2 with cl_khr_d3d11_sharing extension support is required and a D3D11 implementation supporting sharing of surfaces with OpenCL is required. This extension is written against revision 19 of the OpenCL 1.2 Extension specification. Overview The goal of this extension is to extend the interoperability between OpenCL and D3D11 with planar surface formats for media applications. This is designed to reuse existing D3D11 interoperability infrastructure defined in the OpenCL 1.2 specification. Additions to chapter 9.11.7.4 of the OpenCL 1.2 Extension Specification Replace the description of CL_INVALID_D3D11_RESOURCE_KHR error value under clCreateFromD3D11Texture2DKHR with: "CL_INVALID_D3D11_RESOURCE_KHR if is not a Direct3D 11 texture resource, if was created with the D3D11_USAGE flag D3D11_USAGE_IMMUTABLE, if is a multisampled texture, if a cl_mem from subresource of has already been created using clCreateFromD3D11Texture2DKHR, if format is a planar format and was not created with the D3D11_RESOURCE_MISC_FLAG flag D3D11_RESOURCE_MISC_SHARED, or if was not created against the same Direct3D 11 device from which was created." Add the following to the section above the table 9.11.3: "Sharing of arrays of NV12 surfaces is supported. For NV12 surface format is defined as follows: = Plane + (ArraySlice * 2), where Plane = 0 corresponds to the luminance (Y) channel data and Plane = 1 corresponds to the chrominance (UV) channel data and the ArraySlice is the zero-based index for the array level to address." Add the following to table 9.11.3: "----------------------------------------------------------------------- DXGI format CL image format (cl_channel_order, cl_channel_type) --------------------------------- ----------------------------------- DXGI_FORMAT_NV12, Plane 0 CL_R, CL_UNORM_INT8 DXGI_FORMAT_NV12, Plane 1 CL_RG, CL_UNORM_INT8 -----------------------------------------------------------------------" Issues - There is a limitation regarding using of ID3D11DeviceContext::CopySubresourceRegion method not allowing to copy Y and UV portions of the NV12 planar surface independently. This is the only known method that would allow for sharing of NV12 textures without D3D11_RESOURCE_MISC_SHARED flag via a staging resource. Therefore this functionality is disabled and only sharing of resources created with D3D11_RESOURCE_MISC_SHARED flag will be supported. Revision History Version 1, 2013/11/11 (Krzysztof Laskowski) - Initial version. Version 2, 2013/12/12 (Krzysztof Laskowski) - Added description for sharing of arrayed NV12 surfaces Version 3, 2014/28/05 (Krzysztof Laskowski) - Added explanation that sharing of arrays of NV12 surfaces is supported. Version 4, 2014/25/06 (Krzysztof Laskowski) - Marked as complete.