Search Wiki:
Sample demonstrates how to use DXGI 1.1 synchronized shared surface across two Direct3D10.1 devices created in a parent and a child process. The child process's Direct3D10.1 device renders a spinning cube.

Sample specific details
  • surface is shared between a D3D10.1 device of a parent proc and a D3D10.1 device of its child proc
  • the shared surface is the same size as the entire hWnd/swapchain backbuffer created in parent proc
  • sample does not handle window resize and therefore, the shared surface size is fixed
  • interprocess communication occurs via command line arguments only
  • child proc's D3D device renders directly to the shared surface

DXGI 1.1 APIs provide the functionality to synchronize reading from and writing to the same video memory surface (DXGISurface1), by two or more Direct3D devices. The rendering devices using synchronized shared surfaces can be Direct3D 10.1 and/or Direct3D 11 devices, each running in the same process and/or cross processes. For more information, refer to August 2009 DirectX SDK documentation,
For whitepaper on detailed documentation of synchronized shared surfaces support and its usage in sample applications, refer to

Last edited Jan 5 2010 at 8:33 PM  by MaryLuo, version 6
davidleonardcook wrote  Jun 28 2011 at 3:42 PM  
This sample has some errors building and running (or partly this may be my ignorance):

- Sample references D3DX10.h but does not include %DXSDK_DIR%\Include in the include paths. (Possibly this is because VS2008 gets a global include path when you install the DXSDK, while VS2010 does not.)
- Sample needs D3D10_1.lib, but all configurations other than Win32 | Debug link to D3D10.lib instead.
- Sample needs DXGI.lib, but only the Win32 | Debug configuration links to it.
- [nit-picky] Sample displays at the upper left, and the window is not resizable. I have my Windows taskbar at the top of the screen, so it covers the app's title bar, which means I cannot move/close the app by normal means.

Page view tracker