Contribute
Register

how nvidia Fermi generation card does dual external monitor output?

Status
Not open for further replies.
Joined
Dec 17, 2012
Messages
142
Mac
  1. iMac
  2. MacBook Pro
Classic Mac
  1. 0
Mobile Phone
  1. 0
Hi,
I am trying to understand how Fermi Nvidia card routes output to two external monitors.

Let's state the obvious - NVCAP and display-cfg strings control where output goes.
The question is - what condition is required for two external monitors to work?

There is a perfect example how NVCAP string is created from VBIOS, see post #18 by kizvan.

AFAIK much less is known about display-cfg, still no clear idea how that string is made.
In my case I cannot observe any effect from display-cfg at all, it is system definition (MacBookPro10,1) and NVCAP that controls output.
I left both @0/@1,display-cfg to default 0xFF, 0xFF, 0xFF, 0xFF.

In my NVCAP LVDS is put in the first output group and all other DCB entries in the second group.
See below what Nvidiainfo.app reads from extracted VBIOS.
Screenshot 2015-01-14 23.10.11.png

My NVCAP string is
/* 0000 */ 0x05, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00,
/* 0008 */ 0xFC, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07,
/* 0010 */ 0x0A, 0x00, 0x00, 0x00

First display group is blue and second is red.

But this configuration gives me only LVDS and one external monitor. If I connect two external monitors (all DVI), they are both black.

Some more facts:
This is HP 8560w laptop with Nvidia Quadro 2000M card and docking station + two external monitors.
Yosemite 10.10.1 with Nvidia native drivers. Works with Web drivers as well, but Apple drivers are ~5% faster :D (Cinebench test).
I have not yet got this to work with output on both external monitors, thing that windows and linux do easily. For now only on LVDS and one monitor work.

I use Clover + Nvidia DSDT injection and MacBookPro10,1 model, this method gives more control and flexibility compared to Clover Nvidia injection.

By enabling or disabling DCB outputs via NVCAP I can control if a display is used or not.

Full DSDT Nvidia injection:
Code:
                    Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                    {
                        Store (Package (0x26)
                            { 
                                "@AAPL00,DualLink",            Buffer (0x04) { 0x01, 0x00, 0x00, 0x00 },                                                            
                                "AAPL,HasLid",                 Buffer (0x04) { 0x01, 0x00, 0x00, 0x00 },
                                "AAPL,HasPanel",               Buffer (0x04) { 0x01, 0x00, 0x00, 0x00 },
                                                                
                                "@0,backlight-control",        Buffer (0x04) { 0x01, 0x00, 0x00, 0x00 }, 
                                "@0,AAPL,boot-display",        Buffer (One)  { 0x01 },


                                "@0,built-in",                 Buffer (One)  { 0x01 },
                                "@0,use-backlight-blanking",   Buffer (One)  { 0x01 },
                                "@0,device_type",              Buffer (0x08) { "display" },
                                "@0,compatible",               Buffer (0x0B) { "NVDA,NVMac" },                                
                                "@0,name",                     Buffer (0x0F) { "NVDA,Display-A" },
                                
                                "@1,device_type",              Buffer (0x08) { "display" },
                                "@1,compatible",               Buffer (0x0B) { "NVDA,NVMac" },                                
                                "@1,name",                     Buffer (0x0F) { "NVDA,Display-B" },
                                                                
                                "@0,pwm-info",                 Buffer (0x14)
                                {
                                 /* 0000 */   0x01, 0x14, 0x00, 0x64, 0xA8, 0x61, 0x00, 0x00,
                                 /* 0008 */   0x08, 0x52, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
                                 /* 0010 */   0x00, 0x04, 0x00, 0x00
                                },


                                "NVCAP",                       Buffer (0x14)
                                {
                                 /* 0000 */   0x05, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00,
                                 /* 0008 */   0xFC, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07,
                                 /* 0010 */   0x0A, 0x00, 0x00, 0x00
                                },
                                "VRAM,totalsize",              Buffer (0x04)
                                {
                                     0x00, 0x00, 0x00, 0x80
                                },
                                "device_type",                 Buffer (0x0D)
                                {
                                    "NVDA,Parent"
                                },
                                "model",                       Buffer (0x14)
                                {
                                    "NVIDIA Quadro 2000M"
                                },
                                "rom-revision",                Buffer (0x22)
                                {
                                    "NVidia Quadro 2000M OpenGL Engine"
                                }
                            }, Local0)
                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                        Return (Local0)
                    }

Any hint appreciated.
Thanks,
shpokas
 
Hi, could you share needed kexts, config.plist of Clover and dsdt.aml you used to install OSX on your laptop?
I have dell precision m4600 with the same Graphic card nvidia quadro 2000m and I need help with to make own dsdt.aml.

thanks
 
Ok, I'll wait. Thanks again.
 
Hi shpokas01,

I've been searching for a while now on more information on how to get one (or more) external displays working on my HP ZBook and your post has been by far the most promising. I have the very low end card (Nvidia K610M) but basically specs of the laptops should be very similar. I have a few questions:
-what docking station are you using? The extended one (with 2x DVI, 2x DP) or the smaller one?
-where did you get nVidiaInfo.app? I can't seem to find it anywhere.
-does it make a difference if you use MacBook Pro 10,1 or 11,1 in SMBIOS?
-is there a good step-by-step guide that you followed to get your dGPU working?

Thanks so much! :headbang:
 
Status
Not open for further replies.
Back
Top