Contribute
Register

Help me get a black screen! (aka disable nvdia framebuffer on a multiple-gpu with mixed ATI / Nvidia cards)

Joined
Feb 3, 2014
Messages
7
Hi

I've been using a color-grading station with a mix of ATI and Nvidia card for several years. ATI for display/GUI, Nvidia for Cuda / gpu-accelerated renders.
This worked beautifully, up to 10.12.

I had to upgrade to High Sierra (10.13.6), that is the minimal OS required for DaVinci Resolve 16.

Ever since, I could not get mixed ATI / NVIDIA multiple GPUs working together with display on ATI.

As soon as there is one single Nvidia card in the system, the ATI turns black (the system is up & running, it's the famous "black screen" problem).

- I'm using a MacPro 5,1 system definition, so it's not a AppleGraphicsDevicePolicy.kext turning off GFX1 or the like (Mac-F221BEC8 has a 'none' configuration inside /System/Library/Extensions/AppleGraphicsControl.kext/Contents/PlugIns/AppleGraphicsDevicePolicy.kext/Contents/Info.plist)

- I tried all the current recommended sytem definition

- I tried to name my ATI "GFX0", and my nvidia "GFX1", and to create a new config inside AppleGraphicsDevicePolicy.kext which would unload GFX1

- I tried to inject all my Ati info via DSDT ; I can see DSDT injection is working because I can change the name of the card, the slot, apple-primary, etc… but it doesn't change anything to black screen

- I tried to inject null framebuffers for my Nvidia, with dsdt code like so,
"connectors",
Buffer ()
{
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
},

// You may only specify this with connectors property when the amount of connectors differs from autodetected
"connector-count",
Buffer ()
{
0x00, 0x00, 0x00, 0x00
},

and for each of the 6 framebuffers
"@0,AAPL,boot-display", Buffer (One) { 0x00 },
"@0,name", Buffer () { "none" },
"@0,connector-type", Buffer (0x04) { 0x00, 0x00, 0x00, 0x00 },
"@0,AAPL,ndrv-dev", Buffer () { 0x00 },
"@0,device_type", Buffer () { 0x00 },
"@0,NVDA,DeviceClass", Buffer () { 0x00 },
"@0,NVDA,SubDeviceClass", Buffer () { 0x00 },
"@0,display-cfg", Buffer () { 0x00 },
"@0,compatible", Buffer () { "michael" },
"@0,nativeNDRV", Buffer () { "michael" },

It doesn't work as expected : the framebuffers are still here, normal, as seen in IoRegistryExplorer.

- if I make the nvidia primary, I can boot without black screen ; the Ati is available for GPU-computing ; but all its outputs are black. It's the reverse I need

- I tried with Lilu and Evergreen

- I've been trying with several cards. Nvidia : 980ti and 1080 ti ; on Ati : RX460, RX570, Vega 56

- it's not a question of too many GPUS. When Nvidia is primary, I can have 4 gpus with no problems. Or I can put in all my ATIs at the same time.

- it's not a problem with the ATI card poorly supported on the os : without Nvidia inside, the ATIs perform beautifully ; if I boot with nv_disable=1, the display keeps on working on the ATI… but of course cuda-gpu-computing doesn't work

Can somebody suggest what I could do to keep Nvida for GPU-computing but disable its framebuffers?
Maybe that would trick the system into keeping the display on the ATI. Looking at IoregistryExplorer, I can see that nvAccelarator is a brother of the framebuffers, so I hope there is a solution.
Screenshot 2019-12-02 17.26.52.png

Or maybe another solution to keep the display on the ATI when the Nvidias are loaded?
High Sierra has introduced the new kernel extension AppleGpuWrangler, I wonder if it's not the root of all my problems.

As to why?
Trust me DaVinci perform sooo much better with Nvidia cards; I bought from Amazon Vega64 and ProX9100… to my suprise they were slower than the Nvidia 1080 --> I sent them back

many thanks for any help
 

Attachments

Top