Jump to content

View more

Image of the Day

雑魚は多めにして、爽快感重視にしつつ・・・(´・ω・`)
早いとこ、ベースを作って、完成にもっていかないとね。
タイトルもまだ迷ってるだよなぁ。 
#indiedev  #indiegame #screenshotsaturday https://t.co/IwVbswGrhe
IOTD | Top Screenshots

The latest, straight to your Inbox.

Subscribe to GameDev.net Direct to receive the latest updates and exclusive content.


Sign up now

Sharing textures among multiple GPUs?

4: Adsense

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.


  • You cannot reply to this topic
3 replies to this topic

#1 moon2012   Members   

100
Like
0Likes
Like

Posted 09 April 2012 - 02:14 AM

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.

#2 Nik02   Members   

4297
Like
1Likes
Like

Posted 09 April 2012 - 03:07 AM

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.

Niko Suni


#3 eile   Members   

122
Like
0Likes
Like

Posted 12 April 2012 - 01:09 AM

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

#4 eile   Members   

122
Like
0Likes
Like

Posted 12 April 2012 - 01:10 AM

Forgot to mention this: there is also WGL_NV_copy_image to do GPU->GPU transfers.




Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.