Jump to content
  • Advertisement
Sign in to follow this  
moon2012

OpenGL Sharing textures among multiple GPUs?

This topic is 2435 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hi,
Is there anybody who has the experience to share textures(in video memory) among multiple GPUs?
I'm doing multi-monitor development. On the machine(OS is win7), there are two or more ATI display cards(FirePro 2460 or other), each display card has one GPU and more than one output(FirePro 2460 has 4 outputs).
As the SDK mentioned, Direct3D resources can now be shared between devices or processes from Direct3D 9 for Windows Vista, so for each monitor, I create a Direct3D9 device; only one device create the texture and shared it to other devices. This can work well for one display card(that means the machine only use one display card's 4 outputs and connect to 4 monitors), but for two or more display cards, when calling CreateTexture and pass the shared handle to it, it return 0x80070057( An invalid parameter was passed to the returning function).
Can anybody tell me that whether Direct3D support it or not? Or other methods?
It seems that OpenGL can share textures among multiple GPUs.

Share this post


Link to post
Share on other sites
Advertisement
The textures of two separate GPUs are physically in different memory chips. One GPU cannot access memory allocated on an another (except by copying the data via system memory).

Some Crossfire/SLI implementations could implement resource synchronization but the connection does not have nearly the same bandwidth as a PCI-X bus.

OpenGL drivers do software synchronization to make this scenario possible. In D3D, you can manually copy the data to multiple physical textures. Note that readbacks from GPU to system memory are usually relatively slow.

Share this post


Link to post
Share on other sites
You can't share contexts between GPUs. You have to manage the textures to each GPU separately. More (OpenGL-specific) information can be found at http://www.equalizergraphics.com/documentation/parallelOpenGLFAQ.html

Share this post


Link to post
Share on other sites
Forgot to mention this: there is also WGL_NV_copy_image to do GPU->GPU transfers.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!