Jump to content

Nvidia Optimus: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
No edit summary
m Decoupling language a little from the VGA manufacturers.
 
(45 intermediate revisions by 41 users not shown)
Line 1: Line 1:
{{Short description|Computer GPU switching technology created by Nvidia}}
{{primary sources|date=March 2010}}
{{primary sources|date=March 2010}}
'''Nvidia Optimus''' is a computer [[GPU switching]] technology created by [[Nvidia]] which, depending on the resource load generated by client software applications, will seamlessly switch between two graphics adapters within a computer system in order to provide either maximum performance or minimum power draw from the system's graphics rendering hardware.
'''Nvidia Optimus''' is a computer [[GPU switching]] technology created by [[Nvidia]] which, depending on the resource load generated by client software applications, will seamlessly switch between two graphics adapters within a computer system in order to provide either maximum performance or minimum power draw from the system's graphics rendering hardware.


A typical platform includes both a lower-performance [[integrated graphics processor]] by [[Intel]] and a high-performance one by Nvidia. Optimus saves battery life by automatically switching the power of the discrete [[GPU|graphics processing unit]] (GPU) off when it is not needed and switching it on when needed again. The technology mainly targets mobile PCs such as [[notebook]]s.<ref>{{cite web|url=http://www.nvidia.com/object/optimus_technology.html|title=Optimus Technology|publisher=[[Nvidia]]|accessdate=10 April 2016}}</ref>{{efn|Desktop Optimus was slated to be launched in June of 2011<ref>{{cite web|url=http://vr-zone.com/articles/nvidia-to-launch-desktop-optimus--synergy-at-computex/11946.html|title=NVIDIA To Launch Desktop Optimus / Synergy at COMPUTEX|first1=Terence|last1=Lee|date=23 April 2011|accessdate=10 April 2016}}</ref> under the name ''Synergy'',<ref>{{cite web|url=http://news.softpedia.com/news/NVIDIA-Optimus-Lands-on-Desktops-196761.shtml|title=NVIDIA Optimus Lands on Desktops|first1=Sebastian|last1=Pop|date=26 April 2011|accessdate=10 April 2016}}</ref> but never made it.}} When the GPU power is off, the [[Device driver|driver]] redirects graphics commands to the integrated [[graphics chip]]. The switching is designed to be completely seamless and to happen "behind the scenes".
A typical platform includes both a lower-performance [[integrated graphics processor]], usually by [[Intel]] or [[AMD]], and a high-performance one, usually by Nvidia or AMD. Optimus saves battery life by automatically switching the power of the discrete [[GPU|graphics processing unit]] (GPU) off when it is not needed and switching it on when needed again. The technology mainly targets mobile PCs such as [[Laptop|notebooks]].<ref>{{cite web|url=http://www.nvidia.com/object/optimus_technology.html|title=Optimus Technology|date=22 October 2012 |publisher=[[Nvidia]]|access-date=10 April 2016}}</ref>{{efn|Desktop Optimus was slated to be launched in June of 2011<ref>{{cite web|url=http://vr-zone.com/articles/nvidia-to-launch-desktop-optimus--synergy-at-computex/11946.html|title=NVIDIA To Launch Desktop Optimus / Synergy at COMPUTEX|first1=Terence|last1=Lee|date=23 April 2011|access-date=10 April 2016}}</ref> under the name ''Synergy'',<ref>{{cite web|url=http://news.softpedia.com/news/NVIDIA-Optimus-Lands-on-Desktops-196761.shtml|title=NVIDIA Optimus Lands on Desktops|first1=Sebastian|last1=Pop|date=26 April 2011|access-date=10 April 2016}}</ref> but never made it.}} When an application is being launched that is determined to benefit from the performance of the discrete GPU, the discrete GPU is powered up and the application is served by a rendering context via that GPU. Otherwise the application is served by a rendering context that uses the integrated GPU. Switching between the graphics processors is designed to be completely seamless and to happen "behind the scenes".


Official supported operating systems by Nvidia are [[Microsoft Windows]] and [[Linux]]. A project called Bumblebee<ref>{{cite web|url=https://github.com/Bumblebee-Project/Bumblebee|title=Bumblebee Daemon|publisher=[[GitHub]]|date=22 April 2013|accessdate=10 April 2016}}</ref> brings [[open source]] support of Optimus to Linux.<ref>{{cite web|url=http://linux-hybrid-graphics.blogspot.co.uk/2012/01/bumblebee-version-30-tumbleweed-release.html|title=Bumblebee version 3.0 "Tumbleweed" release|date=20 January 2012|accessdate=10 April 2016}}</ref>
Official supported operating systems by Nvidia are [[Microsoft Windows]] and [[Linux]]. A project called Bumblebee<ref>{{cite web|url=https://github.com/Bumblebee-Project/Bumblebee|title=Bumblebee Daemon|publisher=[[GitHub]]|date=22 April 2013|access-date=10 April 2016}}</ref> is an alternative [[Open-source model|open source]] implementation of Optimus support for Linux.<ref>{{cite web|url=http://linux-hybrid-graphics.blogspot.co.uk/2012/01/bumblebee-version-30-tumbleweed-release.html|title=Bumblebee version 3.0 "Tumbleweed" release|date=20 January 2012|access-date=10 April 2016}}</ref>


== Operation ==
== Operation ==
{{Unreferenced section|date=November 2023}}

When a user launches an application, the graphics [[device driver|driver]] tries to determine whether the application would benefit from the discrete GPU. If so, the GPU is powered up from an [[Idle (CPU)|idle]] state and is passed all rendering calls. Even in this case, though, the integrated graphics processor (IGP) is used to output the final image. When less demanding applications are used, the IGP takes sole control, allowing for longer battery life and less fan noise. Under Windows the Nvidia driver also provides the option to manually select the GPU in the right-click menu upon launching an executable.
When a user launches an application, the graphics [[device driver|driver]] tries to determine whether the application would benefit from the discrete GPU. If so, the GPU is powered up from an [[Idle (CPU)|idle]] state and is passed all rendering calls. Even in this case, though, the integrated graphics processor (IGP) is used to output the final image. When less demanding applications are used, the IGP takes sole control, allowing for longer battery life and less fan noise. Under Windows the Nvidia driver also provides the option to manually select the GPU in the right-click menu upon launching an executable.


Within the hardware interface layer of the Nvidia GPU driver, the Optimus Routing Layer provides intelligent graphics management. The Optimus Routing Layer also includes a [[Kernel (computing)|kernel]]-level library for recognizing and managing specific classes and objects associated with different graphics devices. This Nvidia innovation performs state and context management, allocating architectural resources as needed for each driver client (i.e., application). In this context-management scheme, each application is not aware of other applications concurrently using the GPU.
Within the hardware interface layer of the Nvidia GPU driver, the Optimus Routing Layer provides intelligent graphics management. The Optimus Routing Layer also includes a [[kernel (operating system)|kernel]]-level library for recognizing and managing specific classes and objects associated with different graphics devices. This Nvidia innovation performs state and context management, allocating architectural resources as needed for each driver client (i.e., application). In this context-management scheme, each application is not aware of other applications concurrently using the GPU.


By recognizing designated classes, the Optimus Routing Layer can help determine when the GPU can be utilized to improve rendering performance. Specifically, it sends a signal to power-on the GPU when it finds any of the following three call types:
By recognizing designated classes, the Optimus Routing Layer can help determine when the GPU can be utilized to improve rendering performance. Specifically, it sends a signal to power-on the GPU when it finds any of the following three call types:
Line 18: Line 19:
* [[CUDA]] Calls: CUDA applications will trigger these calls
* [[CUDA]] Calls: CUDA applications will trigger these calls


Predefined profiles also assist in determining whether extra graphics power is needed. These can be managed using the Nvidia Control Panel.
Predefined profiles also assist in determining whether extra graphics power is needed. These can be managed using the Nvidia control panel.


Optimus avoids usage of a hardware [[multiplexer]] and prevents glitches associated with changing the display driver from IGP to GPU by transferring the display surface from the GPU [[frame buffer]] over the PCI Express bus to the main memory-based framebuffer used by the IGP. The Optimus Copy Engine is a new alternative to traditional [[Direct Memory Access|DMA]] transfers between the GPU framebuffer memory and main memory used by the IGP.
Optimus avoids usage of a hardware [[multiplexer]] and prevents glitches associated with changing the display driver from IGP to GPU by transferring the display surface from the GPU [[frame buffer]] over the PCI Express bus to the main memory-based framebuffer used by the IGP. The Optimus Copy Engine is a new alternative to traditional [[Direct Memory Access|DMA]] transfers between the GPU framebuffer memory and main memory used by the IGP.

Using the IGP to output data from the discrete GPU may become a bottleneck at high framerates. On desktop-replacement or gaming laptops (where performance is prioritized over energy efficiency), Optimus technology has been heavily criticized. Some vendors have provided hardware multiplexer solutions to completely shut off the Optimus architecture. The operation may be hosted in the BIOS, and often require a reboot.


== Linux support ==
== Linux support ==
{{Update|section|date=December 2015}}
{{Update|section|date=December 2015}}
[[File:The Linux Graphics Stack and glamor.svg|thumb|In the middle the free and open-source driver stack consisting of [[Mesa 3D]] and libDRM in user-space and [[Direct Rendering Manager|DRM]]/[[KMS driver]] in the Linux kernel. Nvidia's proprietary kernel blob cannot make uses of [[DMA BUF]] because of license restrictions.]]
[[File:The Linux Graphics Stack and glamor.svg|thumb|In the middle the free and open-source driver stack consisting of [[Mesa 3D]] and libDRM in user-space and [[Direct Rendering Manager|DRM]]/[[KMS driver]] in the Linux kernel. Nvidia's proprietary kernel blob cannot make uses of [[DMA-BUF]] because of license restrictions.]]


While historically problematic, the binary Nvidia driver since beta version 435.17 officially supports Optimus render offloading for OpenGL and Vulkan applications under the name "PRIME".<ref>{{cite web|url=https://www.phoronix.com/news/NVIDIA-435.17-Linux-Driver|title=NVIDIA 435.17 Linux Beta Driver Adds Vulkan + OpenGL PRIME Render Offload|publisher=[[Phoronix]]|first1=Michael|last1=Larabel|date=13 August 2019|access-date=3 March 2024}}</ref>
The binary Nvidia driver added partial Optimus support May 3, 2013 in the 319.17.<ref>{{cite web|url=https://devtalk.nvidia.com/default/topic/542748/unix-graphics-announcements-and-news/linux-solaris-and-freebsd-driver-319-17/|title=Linux, Solaris, and FreeBSD driver 319.17 (long-lived branch release)|publisher=[[Nvidia]]|first1=Aaron|last1=Plattner|date=2 May 2013|accessdate=10 April 2016}}</ref> As of May 2013, power management for discrete card is not supported, which means it cannot save battery by turning off Nvidia graphic card completely.<ref>{{cite web|url=http://www.opennet.ru/opennews/art.shtml?num=36848|title=Релиз проприетарного драйвера NVIDIA 319.17 с поддержкой Optimus и RandR 1.4|language=RU|date=2 May 2013|accessdate=10 April 2016}}</ref>


The binary Nvidia driver added partial Optimus support May 3, 2013 in the 319.17.<ref>{{cite web|url=https://devtalk.nvidia.com/default/topic/542748/unix-graphics-announcements-and-news/linux-solaris-and-freebsd-driver-319-17/|title=Linux, Solaris, and FreeBSD driver 319.17 (long-lived branch release)|publisher=[[Nvidia]]|first1=Aaron|last1=Plattner|date=2 May 2013|access-date=10 April 2016}}</ref> As of May 2013, power management for discrete card is not supported, which means it cannot save battery by turning off Nvidia graphic card completely.<ref>{{cite web|url=http://www.opennet.ru/opennews/art.shtml?num=36848|title=Релиз проприетарного драйвера NVIDIA 319.17 с поддержкой Optimus и RandR 1.4|language=RU|date=2 May 2013|access-date=10 April 2016}}</ref>
The open-source project [http://www.bumblebee-project.org/ Bumblebee] tries to provide support for graphics-chip switching. As in the Windows implementation, by default all applications run through the integrated graphics processor. {{As of | 2013}} one can only run a program with improved graphical performance on the discrete GPU by explicitly invoking it as such: for example, by using the [[command line]] or through specially configured shortcut icons. Automatic detection and switching between graphics processors is not yet available.

The open-source project [http://www.bumblebee-project.org/ Bumblebee] tries to provide support for graphics-chip switching. As in the Windows implementation, by default all applications run through the integrated graphics processor. {{As of | 2013}} one can only run a program with improved graphical performance on the discrete GPU by explicitly invoking it as such: for example, by using the [[command line]] or through specially configured shortcut icon. Automatic detection and switching between graphics processors is not yet available.


Work in progress on a [[graphical interface]] - ''bumblebee-ui'' - aims to allow more convenient starting of programs for improved graphical performance when necessary.
Work in progress on a [[graphical interface]] - ''bumblebee-ui'' - aims to allow more convenient starting of programs for improved graphical performance when necessary.


[[Steam (software)|Steam]] for Linux can be set up to run games using the discrete GPU ([http://steamcommunity.com/app/221410/discussions/5/846939854395048434/ Steam Community: Optimus and Steam for Linux]).
[[Steam (service)|Steam]] for Linux can be set up to run games using the discrete GPU ([http://steamcommunity.com/app/221410/discussions/5/846939854395048434/ Steam Community: Optimus and Steam for Linux]).

The Bumblebee Project continues to evolve as more necessary software changes are made to the graphics architecture of Linux. To make the most use of it, it is best to use a recent Linux distribution. {{As of | 2013}}, Bumblebee software repositories are available for [[Arch Linux]], [[Debian]], [[Fedora (operating system)|Fedora]], [[Gentoo Linux|Gentoo]], [[Mandriva]], [[OpenSuSE]] and [[Ubuntu (operating system)|Ubuntu]]. The source package can be used for other distributions.

An attempt by Nvidia to support Optimus through [[DMA-BUF]], a [[Linux kernel]]-mechanism for sharing [[Data buffer|buffers]] across hardware (potentially GPUs), was rebuffed by kernel developers in January 2012 due to [[license]] incompatibility between the [[GNU General Public License|GPL]]-licensed kernel-code and the proprietary-licensed Nvidia [[Binary blob|blob]].<ref>
{{cite web | url=https://www.phoronix.com/scan.php?page=news_item&px=MTA0ODE | title=NVIDIA Talks Of Optimus Possibilities For Linux | publisher=Phoronix|date=January 25, 2012}}</ref>

When no software mechanism exists for switching between graphics adapters, the system cannot use the Nvidia GPU at all, even if an installed graphics driver would support it.<ref>[http://www.nvnews.net/vbulletin/showpost.php?s=804c18be75c445d7539dd3525d49a237&p=2291824&postcount=3 "On laptops that don't have that hardware mux you currently cannot use the NVIDIA GPU for display."], July 23, 2010, accessed November 27, 2010. {{webarchive|url=https://web.archive.org/web/20110718151128/http://www.nvnews.net/vbulletin/showpost.php?s=804c18be75c445d7539dd3525d49a237&p=2291824&postcount=3 |date=July 18, 2011 }}</ref>

=== Modern Optimus Support ===
Many Linux distributions now support Nvidia offloading, where the Nvidia card does all rendering. For example on a notebook with an integrated Intel graphics device, which is physically connected to the notebook's display, the Nvidia card renders to the display memory of the integrated device. To avoid tearing, the Xorg server has a mechanism called Prime Synchronization to time these buffer updates, similar to vsync; the Nvidia driver must be loaded as a kernel module for this to work. This is not usually activated by default.{{Citation needed|date=October 2024}}

Unlike Bumblebee, this offloading solution allows multi-monitor graphics. The disadvantage is that toggling the Nvidia card requires a logout.

The leading implementation of this approach is Ubuntu's 'prime-select' package, which has a command line and graphical tool to turn the Nvidia card off. Unlike Windows, this is not done dynamically, and the user must restart the login session for the change to take effect.

Ubuntu's prime-select script is available on Ubuntu derivatives, which in some cases add their own graphical tools. The prime-offload approach has been ported or reimplemented in arch and fedora.


In 2016, Nvidia announced GL Vendor Neutral Dispatch, meaning both Intel and Nvidia drivers can be simultaneously installed. This has greatly simplified the process of switching modes, although it took until 2018 when distributions started taking advantage.
The Bumblebee Project continues to evolve as more necessary software changes are made to the graphics architecture of Linux. To make most use of it, it is best to use a recent Linux distribution. {{As of | 2013}}, Bumblebee software repositories are available for [[Arch Linux]], [[Debian]], [[Fedora (operating system)|Fedora]], [[Gentoo Linux|Gentoo]], [[Mandriva]], [[OpenSuSE]] ([http://download.opensuse.org/repositories/home:/Bumblebee-Project:/Bumblebee/ OpenSuSE Bumblebee repository]) and [[Ubuntu (operating system)|Ubuntu]]. The source package can be used for other distributions.


Some older and high-end laptops contain a [[BIOS]] setting to manually select the state of the hardware multiplexer to switch output between the two video devices. In this case, a Linux user can place the laptop in hardware configurations where there is only once graphics device. This avoids the complexities of running two graphics drivers but offers no power savings.
An attempt by Nvidia to support Optimus through [[DMA BUF]], a [[Linux kernel]]-mechanism for sharing [[Data buffer|buffers]] across hardware (potentially GPUs), was rebuffed by kernel developers in January 2012 due to [[license]] incompatibility between the [[GNU General Public License|GPL]]-licensed kernel-code and the proprietary-licensed Nvidia [[Binary blob|blob]].<ref>
{{cite web | url=http://www.phoronix.com/scan.php?page=news_item&px=MTA0ODE | title=NVIDIA Talks Of Optimus Possibilities For Linux | publisher=Phoronix|date=January 25, 2012}}</ref>


Since driver version 435 the proprietary driver supports render offloading of a single window. It creates a virtual display where the dGPU renders to, which will be displayed in the window on the main screen for offloaded application.<ref>{{Cite web|url=https://download.nvidia.com/XFree86/Linux-x86_64/435.17/README/primerenderoffload.html|title=Chapter&nbsp;35.&nbsp;PRIME Render Offload|website=download.nvidia.com|access-date=2019-10-09}}</ref> As of October 2019 this requires usage of the xorg development branch, since needed modifications are not yet released.
When no software mechanism exists for switching between graphics adapters, the system cannot use the Nvidia GPU at all, even if an installed graphics driver would support it.<ref>[http://www.nvnews.net/vbulletin/showpost.php?s=804c18be75c445d7539dd3525d49a237&p=2291824&postcount=3 "On laptops that don't have that hardware mux you currently cannot use the NVIDIA GPU for display."], July 23, 2010, accessed November 27, 2010.{{Dead link|date=April 2016}}</ref>
Some older computers contain a [[BIOS]] setting to manually select the state of the hardware multiplexer to switch output between the two video devices. However, this setting is no longer part of the Optimus platform.


== See also ==
== See also ==


* [[ATI Hybrid Graphics]]
* [[AMD Hybrid Graphics]]


== Notes ==
== Notes ==
Line 54: Line 73:
{{reflist}}
{{reflist}}


== External links ==
* [http://www.nvidia.com/object/LO_optimus_whitepapers.html Nvidia Optimus whitepaper]


{{Nvidia}}
{{Nvidia}}

Latest revision as of 12:23, 14 October 2024

Nvidia Optimus is a computer GPU switching technology created by Nvidia which, depending on the resource load generated by client software applications, will seamlessly switch between two graphics adapters within a computer system in order to provide either maximum performance or minimum power draw from the system's graphics rendering hardware.

A typical platform includes both a lower-performance integrated graphics processor, usually by Intel or AMD, and a high-performance one, usually by Nvidia or AMD. Optimus saves battery life by automatically switching the power of the discrete graphics processing unit (GPU) off when it is not needed and switching it on when needed again. The technology mainly targets mobile PCs such as notebooks.[1][a] When an application is being launched that is determined to benefit from the performance of the discrete GPU, the discrete GPU is powered up and the application is served by a rendering context via that GPU. Otherwise the application is served by a rendering context that uses the integrated GPU. Switching between the graphics processors is designed to be completely seamless and to happen "behind the scenes".

Official supported operating systems by Nvidia are Microsoft Windows and Linux. A project called Bumblebee[4] is an alternative open source implementation of Optimus support for Linux.[5]

Operation

[edit]

When a user launches an application, the graphics driver tries to determine whether the application would benefit from the discrete GPU. If so, the GPU is powered up from an idle state and is passed all rendering calls. Even in this case, though, the integrated graphics processor (IGP) is used to output the final image. When less demanding applications are used, the IGP takes sole control, allowing for longer battery life and less fan noise. Under Windows the Nvidia driver also provides the option to manually select the GPU in the right-click menu upon launching an executable.

Within the hardware interface layer of the Nvidia GPU driver, the Optimus Routing Layer provides intelligent graphics management. The Optimus Routing Layer also includes a kernel-level library for recognizing and managing specific classes and objects associated with different graphics devices. This Nvidia innovation performs state and context management, allocating architectural resources as needed for each driver client (i.e., application). In this context-management scheme, each application is not aware of other applications concurrently using the GPU.

By recognizing designated classes, the Optimus Routing Layer can help determine when the GPU can be utilized to improve rendering performance. Specifically, it sends a signal to power-on the GPU when it finds any of the following three call types:

  • DX Calls: Any 3D game engine or DirectX application will trigger these calls
  • DXVA Calls: Video playback will trigger these calls (DXVA = DirectX Video Acceleration)
  • CUDA Calls: CUDA applications will trigger these calls

Predefined profiles also assist in determining whether extra graphics power is needed. These can be managed using the Nvidia control panel.

Optimus avoids usage of a hardware multiplexer and prevents glitches associated with changing the display driver from IGP to GPU by transferring the display surface from the GPU frame buffer over the PCI Express bus to the main memory-based framebuffer used by the IGP. The Optimus Copy Engine is a new alternative to traditional DMA transfers between the GPU framebuffer memory and main memory used by the IGP.

Using the IGP to output data from the discrete GPU may become a bottleneck at high framerates. On desktop-replacement or gaming laptops (where performance is prioritized over energy efficiency), Optimus technology has been heavily criticized. Some vendors have provided hardware multiplexer solutions to completely shut off the Optimus architecture. The operation may be hosted in the BIOS, and often require a reboot.

Linux support

[edit]
In the middle the free and open-source driver stack consisting of Mesa 3D and libDRM in user-space and DRM/KMS driver in the Linux kernel. Nvidia's proprietary kernel blob cannot make uses of DMA-BUF because of license restrictions.

While historically problematic, the binary Nvidia driver since beta version 435.17 officially supports Optimus render offloading for OpenGL and Vulkan applications under the name "PRIME".[6]

The binary Nvidia driver added partial Optimus support May 3, 2013 in the 319.17.[7] As of May 2013, power management for discrete card is not supported, which means it cannot save battery by turning off Nvidia graphic card completely.[8]

The open-source project Bumblebee tries to provide support for graphics-chip switching. As in the Windows implementation, by default all applications run through the integrated graphics processor. As of 2013 one can only run a program with improved graphical performance on the discrete GPU by explicitly invoking it as such: for example, by using the command line or through specially configured shortcut icon. Automatic detection and switching between graphics processors is not yet available.

Work in progress on a graphical interface - bumblebee-ui - aims to allow more convenient starting of programs for improved graphical performance when necessary.

Steam for Linux can be set up to run games using the discrete GPU (Steam Community: Optimus and Steam for Linux).

The Bumblebee Project continues to evolve as more necessary software changes are made to the graphics architecture of Linux. To make the most use of it, it is best to use a recent Linux distribution. As of 2013, Bumblebee software repositories are available for Arch Linux, Debian, Fedora, Gentoo, Mandriva, OpenSuSE and Ubuntu. The source package can be used for other distributions.

An attempt by Nvidia to support Optimus through DMA-BUF, a Linux kernel-mechanism for sharing buffers across hardware (potentially GPUs), was rebuffed by kernel developers in January 2012 due to license incompatibility between the GPL-licensed kernel-code and the proprietary-licensed Nvidia blob.[9]

When no software mechanism exists for switching between graphics adapters, the system cannot use the Nvidia GPU at all, even if an installed graphics driver would support it.[10]

Modern Optimus Support

[edit]

Many Linux distributions now support Nvidia offloading, where the Nvidia card does all rendering. For example on a notebook with an integrated Intel graphics device, which is physically connected to the notebook's display, the Nvidia card renders to the display memory of the integrated device. To avoid tearing, the Xorg server has a mechanism called Prime Synchronization to time these buffer updates, similar to vsync; the Nvidia driver must be loaded as a kernel module for this to work. This is not usually activated by default.[citation needed]

Unlike Bumblebee, this offloading solution allows multi-monitor graphics. The disadvantage is that toggling the Nvidia card requires a logout.

The leading implementation of this approach is Ubuntu's 'prime-select' package, which has a command line and graphical tool to turn the Nvidia card off. Unlike Windows, this is not done dynamically, and the user must restart the login session for the change to take effect.

Ubuntu's prime-select script is available on Ubuntu derivatives, which in some cases add their own graphical tools. The prime-offload approach has been ported or reimplemented in arch and fedora.

In 2016, Nvidia announced GL Vendor Neutral Dispatch, meaning both Intel and Nvidia drivers can be simultaneously installed. This has greatly simplified the process of switching modes, although it took until 2018 when distributions started taking advantage.

Some older and high-end laptops contain a BIOS setting to manually select the state of the hardware multiplexer to switch output between the two video devices. In this case, a Linux user can place the laptop in hardware configurations where there is only once graphics device. This avoids the complexities of running two graphics drivers but offers no power savings.

Since driver version 435 the proprietary driver supports render offloading of a single window. It creates a virtual display where the dGPU renders to, which will be displayed in the window on the main screen for offloaded application.[11] As of October 2019 this requires usage of the xorg development branch, since needed modifications are not yet released.

See also

[edit]

Notes

[edit]
  1. ^ Desktop Optimus was slated to be launched in June of 2011[2] under the name Synergy,[3] but never made it.

References

[edit]
  1. ^ "Optimus Technology". Nvidia. 22 October 2012. Retrieved 10 April 2016.
  2. ^ Lee, Terence (23 April 2011). "NVIDIA To Launch Desktop Optimus / Synergy at COMPUTEX". Retrieved 10 April 2016.
  3. ^ Pop, Sebastian (26 April 2011). "NVIDIA Optimus Lands on Desktops". Retrieved 10 April 2016.
  4. ^ "Bumblebee Daemon". GitHub. 22 April 2013. Retrieved 10 April 2016.
  5. ^ "Bumblebee version 3.0 "Tumbleweed" release". 20 January 2012. Retrieved 10 April 2016.
  6. ^ Larabel, Michael (13 August 2019). "NVIDIA 435.17 Linux Beta Driver Adds Vulkan + OpenGL PRIME Render Offload". Phoronix. Retrieved 3 March 2024.
  7. ^ Plattner, Aaron (2 May 2013). "Linux, Solaris, and FreeBSD driver 319.17 (long-lived branch release)". Nvidia. Retrieved 10 April 2016.
  8. ^ "Релиз проприетарного драйвера NVIDIA 319.17 с поддержкой Optimus и RandR 1.4" (in Russian). 2 May 2013. Retrieved 10 April 2016.
  9. ^ "NVIDIA Talks Of Optimus Possibilities For Linux". Phoronix. January 25, 2012.
  10. ^ "On laptops that don't have that hardware mux you currently cannot use the NVIDIA GPU for display.", July 23, 2010, accessed November 27, 2010. Archived July 18, 2011, at the Wayback Machine
  11. ^ "Chapter 35. PRIME Render Offload". download.nvidia.com. Retrieved 2019-10-09.