Is it efficient: Copy decoded video frame into OpenGL by OpenCL kernel?

Is it efficient: Copy decoded video frame into OpenGL by OpenCL kernel?


I integrated Intel QuickSync with Intel MediaSDK into a product, which uses OpenGL for video displaying.

My integration receives frame data into system memory.

While benchmarking I encountered, that decoding  into Direct3D memory is much faster.

So, I imagine, that QuickSync decodes frame into Direct3D, and then copies it (probably via DMA) into system memory.

So, in my system, each decoded frame happens double copying of frame data from GPU memory to System memory and back.

As far as I didn't find simple way to copy or use Direct 3D data in OpenGL, I got an idea to copy media frame data inside of GPU memory.

There is OpenCL to DirectX interoperability and OpenGL-openCL interoperability.

The question is: Will this work?

If yes - will it be more efficient, than double DMA via System memory?

10 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.
Best Reply


Sorry I missed seeing this question earlier.  I believe the OpenGL extension "WGL_NV_DX_interop" may provide a direct DX->OpenGL solution. I know the OpenGL extension was added to Intel drivers a while ago, but I do not know the latest performance (or if it even supports NV12 media surfaces).  I'll check.

glew-1.10.0 reports missing WGL_NVDX_interop capabilities :(
does it mean it is implemented differently?

glew does not recognize this extension because it checks this capability by NVIDIA algorithm?



I just checked this and I see glew-1.10.0 reporting this extension as supported.

Are you accessing your platform while the Intel graphics adapter is active and DirectX usage is available?

There are several reasons why usability of any Direct3D9 capability might not be available.  (old hardware, remote desktop usage with no monitor, etc.)

Are any D3D9-based applications successfully operating with acceleration? (including MediaSDK?). You can run "dxdiag" and provide the output if you would like me to analyze why you might not be seeing the WGL_NV_DX_interop extension supported.

I use 2 computers. One is  i3 2100 + H61 chipset

Another is i3 2120 + H77 chipset

both run QuickSync ( hardware accelerated MediaSDK )  I verified it under debugger.

both reports WGL_NV_DX_interop capabilities MISSING

I attach DxDiag of the first configuration

If it is helpful, I will provide second configuration on Monday.


Downloadtext/plain DxDiag-H61.txt32.73 KB

I attach DxDiag from H77 chipset


Downloadtext/plain DxDiag-H77.txt24.21 KB

The processors on these systems are 2nd Generation Intel® Core™ i3 Processors and this OpenGL feature was introduced in the 3nd Generation Intel® Core™ Processors (with Intel® HD Graphics 2500 or newer).


Thank you this is good answer.

However, I still ask about methodology D3D to OpenGL copying with OpenCL ( for possibility to use Intel HD Graphics 2000 also)

Besides, how to recognize is WGL_DX_NV_interop capability supported in the system, running my software?

Since now II have i5-3570K CPU on GigaByte GA-H77M-D3H motherboard

WGL_DX_NV_interop is still missing :(

I attach new DxDiag and glewinfo files.

is it possible that some other software is missing?




Downloadtext/plain DxDiag-3570K.txt22.22 KB
Downloadtext/plain glewinfo-i5.txt212.4 KB


From this DxDiag output, it looks like the Intel(r) HD Graphics drivers have not been installed yet (vga driver was listed).  You can obtain the latest drivers here from

Also, i noticed this is running Windows 7.  The Intel(r) 3rd Generation system i checked was running Windows 8.  I believe the Intel OpenGL capabilities are the same on win7 and 8, but I can check with others to make sure.


Leave a Comment

Please sign in to add a comment. Not a member? Join today