- Joined
- Dec 17, 2012
- Messages
- 142
- Mac
- Classic Mac
- Mobile Phone
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.
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 (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:
Any hint appreciated.
Thanks,
shpokas
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.
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 (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