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.