We have some troubles on AMD Switchable Graphics system with Direct3D surfaces sharing technology. To be clear, Direct3D can find only single adapter and I will mean High Performance mode by "AMD GPU" and Power saving mode by "Intel GPU". According with our experiments only integrated GPUs can share surfaces. All other scenarios makes troubles, i.e. Intel GPU allows to open shared surface handle of AMD GPU and AMD GPU allows to open shared surface handle of AMD and Intel GPUs. But opened shared surface is black. I also tried to share surface between two D3D devices in same process. And result is black if process assigned to High Performance GPU but this works for Power Saving GPU. Ideally, shared resource opening should fail for different adapters. I suppose this do not fail because Direct3D see only one adapter and real adapter assigned internally. So here is what we need:
1. Surfaces sharing support on High performance (AMD) GPU. For example, Optimus technology supports surface sharing when both D3D devices assigned to Intel GPU, or both to High Performance GPU. Do you (AMD) plan to support this (surfaces sharing between two D3D devices both assigned to AMD GPU)? If so, we need some API to detect assigned adapter inside process. So we will avoid to share surfaces between different adapters.
2. API to force power saving mode for our application (before we create any D3D device). To avoid surface sharing issues between two D3D devices in High Performance mode.
Seems we solved issue 1 in part of detection (but if anybody knows proper and simple way to do this it will be good to know). However, surface sharing between two D3D devices assigned to High Performance GPU should be implemented in my opinion. And we still need solution for issue 2 to force power saving mode on our application startup.
I really want to stream nicely on twitch! Its becoming such a big thing that everyone is doing so its pretty terrible if AMD don't support it on their laptops.
FYI. Doesn't depend if issue was solved or not - our solution is work around while bug is still present. First of all, to identify all these systems main requirement is to have all these systems (how else you can find symptoms of these systems and test detection code?)
Then, this is kind of tricky task since both AMD and NVIDIA do not provide any standard API ! AMD have some API but it just doesn't work.
And third, OpenSharedResource call must fail else opened resource must work as it should! (even without any API and any additional detection)
Test system: laptop with switchable graphics system - 7660G + 7970M GPUs (driver 220.127.116.11 for both). Windows 8 says there no driver updates. AMD automatic detection tool starts and nothing happens. On this system, all cases works except following. Resource was created on iGPU (power saving) and opened on dGPU (high performance) without errors. But surfaces sharing doesn't work. Opened resource always white.
Enduro laptop with 7670M + Intel HD 4000. Win8 64-bit. Tried official laptop driver, and latest AMD mobility driver 18.104.22.168 (amd tool installed this one).
Only iGPU -> iGPU surfaces sharing works. iGPU -> dGPU, dGPU -> iGPU, dGPU -> dGPU STILL DOES NOT WORK!
Please note, the only way to understand that surface sharing doesn't work is to get failed result of OpenSharedResource method call (which returns success). CopyResource and other methods that may use shared resource have no return value!
So I will mention again, OpenSharedResource must FAIL ELSE surface sharing must WORK.
DO ANYONE HERE FROM AMD READ THIS FORUM? DO YOU PLAN TO FIX THIS VERY IMPORTANT BUG?
I hope that everyone here understand that with html5 even browsers today uses d3d hardware acceleration and uses surfaces sharing functionality between processes. These bugs is not acceptable at all.
the forums are not a real bug-reporting tool. Maybe someone at AMD reads your post and decides to do something but the forums are thought mainly for commenting issues between the community. For real bug-reports see this post: