Hybrid Graphics Card Support
Recently, more and more models appear on the laptop market containing not one, but two graphics cards at once. The first is usually from Intel, low-performance and not greedy for the battery, and the second from NVIDIA or ATI, which takes on heavy tasks and demanding games, while at the same time it is very voracious in relation to the battery charge. The first graphic card works almost all the time, the second starts working as soon as it becomes necessary, and is in the disconnected state the rest of the time.
Manufacturers are fully concerned about Windows support, which is not surprising. Everything works almost out of the box, just put the right set of drivers.
Under Linux, things are not so smooth so far. It should be understood right away that there is practically no support at the kernel level. There are several projects that implement a separate functionality, such as turning off the cards or transferring images from one card to another, but alright, that's all right at once. Everything is complicated by the fact that manufacturers are not in a hurry to add support for theirbike solutions in Linux and do not tell how to drive them.
In most cases, the discrete (second) card is not connected anywhere, and the image is transferred to the integrated card using software and drivers. This explains the presence of a CRT-0 or DFP-0 virtual screen in a system that cannot be connected normally. However, sometimes it is possible.
Consider most of the solutions available at this time.
A kernel module that implements switching between cards (turning off one card, turning on another). Appeared in the kernel since version 2.6.34. Also got advanced features and great support for cards in byo-switcheroo (formerly asus-switcheroo). Requires the presence of mounted debugfs, to switch between cards requires turning off the X server. In addition, it works only with open drivers.
Another kernel module, but not yet included in the main branch. Perhaps he will never be there. Located on github . The main task is to give the user the ability to transfer command lines to the acpi subsystem. It is mainly used to turn a discrete card on and off in order to save energy.
Application for forwarding the main screen of the X server to the screen of another X server. Also located on github . Allows you to combine two screens from different X servers on one physical display.
Support project for using discrete cards based on NVIDIA Optimus with proprietary drivers. The most actively developing project at the moment. Located again on github . Allows you to manually download individual applications on a discrete card. It is implemented through the use of an additional X server for the NVIDIA graphics card and VirtualGL package for transferring data between X servers. Recently, the ability to disable a discrete card for some laptop models via acpi_call, when not in use, has been added. Additionally, it allows you to get CUDA support, VDPAU support has not yet been implemented.
In kernel 3.0 , the addition of a more advanced MXM switching method is expected . Nevertheless, this is just a small part of the full support of everything and everything. It is also recommended that you subscribe to the linux-hybrid-graphics newsletter and stay tuned on a dedicated blog . Well, of course, if possible, be active in the community, helping to develop various solutions and providing acpi dumps of your equipment.
Manufacturers are fully concerned about Windows support, which is not surprising. Everything works almost out of the box, just put the right set of drivers.
Under Linux, things are not so smooth so far. It should be understood right away that there is practically no support at the kernel level. There are several projects that implement a separate functionality, such as turning off the cards or transferring images from one card to another, but alright, that's all right at once. Everything is complicated by the fact that manufacturers are not in a hurry to add support for their
Technical details
In most cases, the discrete (second) card is not connected anywhere, and the image is transferred to the integrated card using software and drivers. This explains the presence of a CRT-0 or DFP-0 virtual screen in a system that cannot be connected normally. However, sometimes it is possible.
Consider most of the solutions available at this time.
vga_switcheroo
A kernel module that implements switching between cards (turning off one card, turning on another). Appeared in the kernel since version 2.6.34. Also got advanced features and great support for cards in byo-switcheroo (formerly asus-switcheroo). Requires the presence of mounted debugfs, to switch between cards requires turning off the X server. In addition, it works only with open drivers.
acpi_call
Another kernel module, but not yet included in the main branch. Perhaps he will never be there. Located on github . The main task is to give the user the ability to transfer command lines to the acpi subsystem. It is mainly used to turn a discrete card on and off in order to save energy.
hybrid windump
Application for forwarding the main screen of the X server to the screen of another X server. Also located on github . Allows you to combine two screens from different X servers on one physical display.
bumblebee
Support project for using discrete cards based on NVIDIA Optimus with proprietary drivers. The most actively developing project at the moment. Located again on github . Allows you to manually download individual applications on a discrete card. It is implemented through the use of an additional X server for the NVIDIA graphics card and VirtualGL package for transferring data between X servers. Recently, the ability to disable a discrete card for some laptop models via acpi_call, when not in use, has been added. Additionally, it allows you to get CUDA support, VDPAU support has not yet been implemented.
What's next?
In kernel 3.0 , the addition of a more advanced MXM switching method is expected . Nevertheless, this is just a small part of the full support of everything and everything. It is also recommended that you subscribe to the linux-hybrid-graphics newsletter and stay tuned on a dedicated blog . Well, of course, if possible, be active in the community, helping to develop various solutions and providing acpi dumps of your equipment.
List of links
- Linux NVIDIA Optimus Support Statement - www.nvnews.net/vbulletin/showpost.php?p=2183477&postcount=2
- Vga_switcheroo module commit to main kernel branch - git.kernel.org/linus/6a9ee8af344e3bd7dbd61e67037096cdf7f83289
- Byo-switcheroo repository on github - github.com/awilliam/asus-switcheroo
- Acpi_call repository on github - github.com/avilella/acpi_call
- Hybrid-windump repository on github - github.com/gebart/hybrid-windump
- VirtualGL Project - www.virtualgl.org
- Bumblebee repository on github - github.com/MrMEEE/bumblebee
- News about Optimus support in kernel 3.0 - www.phoronix.com/scan.php?page=news_item&px=OTQzMA
- Hybrid-graphics-linux mailing list on launchpad - lists.launchpad.net/hybrid-graphics-linux
- Linux hybrid support blog - linux-hybrid-graphics.blogspot.com