Secondary graphics processor control system

A secondary graphics processor control system includes a secondary graphics processor. A controller is coupled to the secondary graphics processor. The controller detects the start of an application that is associated with a secondary graphics processor and then determines a power capability of a battery. The controller then either prevents enablement of the secondary graphics processor if the power capability is below a predetermined threshold such that only a primary graphics processor processes graphics for the application, or allows enablement of the secondary graphics processor if the power capability is above the predetermined threshold such that the secondary graphics processor processing graphics for the application. The primary graphics processor may be an integrated graphics processing unit (iGPU) provided by a system processor that is mounted to a board, and the secondary graphics processor may be a discrete graphics processing unit (dGPU) that is coupled to the board.

BACKGROUND

The present disclosure relates generally to information handling systems (IHSs), and more particularly to a secondary graphics processor control system in an IHS.

Some IHSs utilize multiple graphics processors for processing graphics that are displayed on the IHS. For example, IHSs may include a system processor that provides a primary graphics processor, sometimes referred to as an integrated graphics processing unit (iGPU), along with a secondary graphics processor that is separate from the system processor/primary graphics processor, sometimes referred to as a discrete graphics processing unit (dGPU). The IHS may use only the primary graphics processor to process graphics when relatively less graphics intensive applications (e.g., email applications, productivity applications, web browsing applications, and/or a variety of other relatively less graphics intensive applications known in the art) are run on the IHS, and may use the secondary graphics processor to process graphics when more graphics intensive applications (e.g., gaming applications) are run on the IHS. Switching between processing graphics using the primary graphics processor and processing graphics using the secondary graphics processor has conventionally been performed using a switching algorithm that includes a list of applications that, upon launch, will result in the enablement of the secondary graphics processor for processing graphics for the IHS. If an application is launched that is not on the list of applications, the primary GPU will continue to process graphics for the IHS.

Enabling the secondary graphics processor in response to simply detecting the launch of an application on the list raises a number of issues. For example, the secondary graphics processor typically consumes much more power relative to the primary graphics processor, and automatically switching from the primary graphics processor to the secondary graphics processor to process graphics for the IHS may quickly deplete the IHS battery. This can result in a negative user experience when only IHS battery power is available to the IHS and a convenient power source with which to recharge the IHS battery is not available.

Accordingly, it would be desirable to provide an improved secondary graphics processor control system.

SUMMARY

According to one embodiment, a secondary graphics processor control system includes a secondary graphics processor and a controller coupled to the secondary graphics processor, wherein the controller is operable to: detect the start of an application that is associated with the secondary graphics processor; determine a power capability of a battery in response to detecting the start of the application; in response to the power capability of the battery being above a predetermined threshold, allow enablement of the secondary graphics processor for processing graphics for the application; and in response to the power capability of the battery being below the predetermined threshold, prevent enablement of the secondary graphics processor for processing graphics for the application.

DETAILED DESCRIPTION

Referring now toFIG. 2, an IHS200that may be the IHS100, described above with reference toFIG. 1, and/or that may include some or all of the components of the IHS100, is illustrated. A board202includes a system processor205that is mounted to the board202. The system processor205may be, for example, the processor102described above with reference toFIG. 1. A plurality of memory devices206are coupled to the board202. The memory devices206may be, for example, the system memory114described above with reference toFIG. 1. In an embodiment, the system processor205is operable to provide a primary graphics processor for processing graphics for applications run on the IHS200. For example, the primary graphics processor may provide an integrated graphics processing unit (iGPU) for the IHS200through operation of the system processor205. One of skill in the art will recognize that a variety of IHS components other than the system processor205and the memory devices206may be coupled to the board202while remaining within the scope of the present disclosure.

The IHS200also includes a board208that includes a secondary graphics processor210that is mounted to the board208. The secondary graphics processor210provides for the processing of graphics for applications run on the IHS200. For example, the secondary graphics processor210may provide a discrete graphics processing unit (dGPU) for the IHS200. A plurality of memory devices212are coupled to the board208. As is illustrated, the board202is coupled to the board208through a coupling214. One of skill in the art will recognize that a variety of IHS components other than the secondary graphics processor210and the memory devices212may be coupled to the board208while remaining within the scope of the present disclosure.

One of skill in the art will recognize that the IHS200employs a topology that is commonly known as “iGPU with secondary dGPU” or “Switchable Graphics”. Such topologies can be provided using a number of physical implementations. For example, in a desktop IHS implementation, the board202may be a motherboard that includes a card connector (e.g., a Peripheral Component Interconnect (PCI) card connector, a PCI Express (PCIe) card connector, and/or a variety of other card connectors known in the art), and the board208may be part of a video card (e.g., a PCI video card, a PCIe video card, and/or a variety of other video cards known in the art). In such an implementation, the coupling214represents the coupling of the video card including the secondary graphics processor210to the card connector on the motherboard. In another example, in a notebook or other portable IHS implementation, the board202may be a motherboard that includes the primary graphics processor205(e.g., the system processor that provides the primary graphics processor205) and the secondary graphics processor210may be mounted to the motherboard in a manner similar to the mounting of the primary graphics processor205to the motherboard. In such an implementation, the coupling214represents a portion of the motherboard (e.g., the board202) to which the secondary graphics processor210is mounted (i.e., the board208is part of the board202). While specific implementations of “iGPU with secondary dGPU” or “Switchable Graphics” topologies have been described, one of skill in the art will recognize that modifications to those topologies may be made, and a variety of other “iGPU with secondary dGPU” or “Switchable Graphics” topology implementations will fall within the scope of the present disclosure. For example, a desktop IHS implementation may include both the primary and secondary graphics processors mounted to the same motherboard. Furthermore, some of the illustrated components may be omitted in some implementation (e.g., the memory devices212may be omitted when both the primary and secondary graphics processors are mounted to the same motherboard, as both the primary and secondary graphics processors may be able to use the memory devices206.)

Referring now toFIG. 3, a secondary graphics processor control system300is illustrated. In an embodiment, the secondary graphics processor control system300may be implemented in the IHS200, described above with reference toFIG. 2. The secondary graphics processor control system300includes an operating system302that may include instructions that are stored on a non-transitory, computer-readable medium (e.g., the storage device108and/or system memory114ofFIG. 1) and that, when executed by a processor (e.g., the processor102ofFIG. 1), provide an operating system for the IHS200as is known in the art. The operating system302is coupled to a secondary graphics processor controller304a, which is coupled to a secondary graphics processor driver304b. In an embodiment, the secondary graphics processor controller304aand the secondary graphics processor driver304bmay be separate components. In another embodiment, the secondary graphics processor controller304aand the secondary graphics processor driver304bmay be combined, as illustrated by the dotted line inFIG. 3(e.g., in some embodiments, the secondary graphics processor controller304ais provided by the secondary graphics processor driver304b). The secondary graphics processor controller304ais coupled to a battery306that may be used to provide power to the IHS200. In an embodiment, the battery306may include a variety of battery components known in the art such as, for example, a battery management unit (BMU). In other embodiments, the battery306may be replaced by a variety of other power sources known in the art such as, for example, power sources external to the IHS200. The secondary graphics processor driver304bis coupled to a secondary graphics processor308which may be, for example, the secondary graphics processor210discussed above with reference toFIG. 2.

Referring now toFIGS. 3 and 4, a method400for controlling a secondary graphics processor is illustrated. In an embodiment, the method400may be performed on a portable IHS (e.g., a laptop or notebook IHS) running on battery power, and/or a variety of other limited power situations known in the art. In the embodiment described below, the primary graphics processor may be referred to as an iGPU, discussed above, and the secondary graphics processor may be referred to as a dGPU, also discussed above. However, one of skill in the art will recognize that the use of such naming conventions to describe the method400should not limit the applicability of the method400to processors that perform similar operations without sharing such naming conventions.

The method100begins at block402where a start instruction for an application is received. As is known in the art, a user of the IHS200may use the IHS200to send a start instruction for an application (e.g., by launching the application using the operating system302using methods known in the art). In response to the user sending the start instruction for the application, the operating system302will instruct the secondary graphics processor controller304ato start the application.

The method100then proceeds to decision block404where the secondary graphics processor controller304adetermines whether a power threshold is enabled. In an embodiment, the secondary graphics processor controller304amay store a power threshold that is used to determine whether to enable the secondary graphics processor308for processing graphics during the method400, as is discussed in further detail below. In an embodiment, the secondary graphics processor controller304amay be pre-programmed with the power threshold. In another embodiment, the secondary graphics processor controller304amay allow a user of the IHS200to set or select the power threshold. For example, the user of the IHS200may enable, adjust, and/or otherwise select and/or provide a value for the power threshold using a control panel provided by the IHS200. In an embodiment, the power threshold may include one or more power variables such as a power capacity threshold (e.g., a value that represents a remaining power capacity of the battery such as a percentage of power left in the battery), a time capacity threshold (e.g., a value that represents a remaining time capacity of the battery such as a time period remaining in which the battery may effectively power the IHS200), and/or a variety of other power capacity thresholds known in the art. In an embodiment, the power threshold may include one or more application power thresholds such as an application battery estimate threshold (e.g., a value that represents how much power the battery will need for a typical use of the application) and/or a variety of other application power variables known in the art. At decision block404, if the secondary graphics processor controller304adetermines that the power threshold has not been enabled, the method400proceeds to block406where a default policy for the application is followed. In an embodiment, the default policy includes instructions and/or other details for how the IHS should process instructions from the application.

If, at decision block404, the secondary graphics processor controller304adetermines that the power threshold has been enabled, the method400proceeds to decision block408where the secondary graphics processor controller304adetermines whether the battery306is below the power threshold that was determined to be enabled at block404of the method400. In an embodiment, the secondary graphics processor controller304amay communicate with a BMU in the battery306to determine whether a power capacity of the battery306is below the power threshold. For example, at decision block408, the BMU in the battery306may be able to provide the secondary graphics processor controller304awith a value that represents a remaining power capacity of the battery such as a percentage of power left in the battery. In another example, at decision block408, the BMU in the battery306may be able to provide the secondary graphics processor controller304awith a value that represents a remaining time capacity of the battery such as a time period remaining in which the battery may effectively power the IHS200. While the secondary graphics processor controller304ahas been described as communicating with the BMU in the battery306to determine whether the power capacity of the battery306is below the power threshold, one of skill in the art will recognize that a variety of techniques to discover a power capacity of the battery306will fall within the scope of the present disclosure.

If, at decision block408, the secondary graphics processor controller304adetermines that power capacity of the battery306is below the power threshold, the method400proceeds to block410where the secondary graphics processor controller304aprevents the secondary graphics processor driver304bfrom enabling the secondary graphics processor308(e.g., the dGPU) such that the primary graphics processor (e.g., the iGPU) is used to run the application for which the start instruction was recieved at block402of the method400. As discussed above, the secondary graphics processor driver304bmay include a list of application profiles that, upon receiving an instruction to start up of one of the applications associated with an application profile on that list, will conventionally cause the secondary graphics processor driver304bto enable the secondary graphics processor308(e.g., the dGPU) for processing graphics for that application. For example, if the application for which the start instruction was received at block402of the method400is associated with an application profile on the list in the secondary graphics processor driver304b, the secondary processor driver304bwould conventionally power up the dGPU, launch the application using the dGPU, and keep the dGPU active until the application was ended. However, at decision block408and block410of the method400, the secondary graphics processor controller304awill prevent enablement of the secondary graphics processor308such that the primary graphics processor (e.g., the iGPU) processes graphics for the application. For example, the iGPU may be processing graphics for any applications running on the IHS200, and at blocks402,404,408, and410of the method400, an application that would normally have its graphics processed by the dGPU will instead have its graphics processed only by the iGPU due to the power capability of the battery306being below the power threshold.

If, at decision block408, the secondary graphics processor controller304adetermines that the power capability of the battery306is not below the power threshold, the method400proceeds to decision block412where the secondary graphics processor controller304adetermines whether an application battery estimate falls below the power threshold. In an embodiment, the secondary graphics processor controller304ais operable to determine an application battery estimate that includes an estimate of how much power a typical use of the application will consume when graphics for that application are processed by the secondary graphics processor308. For example, the application battery estimate may be determined by averaging the power consumption of the application over a plurality of previous uses of the application when the graphics for that application were processed by the dGPU. In another example, the application battery estimate may be provided by the application provider. While a few examples have been provided, one of skill in the art will recognize that a variety of techniques may be used to determine an application battery estimate for an application. At decision block412, the secondary graphics processor controller304aretrieves the application battery estimate. In an embodiment, the secondary graphics processor controller304amay use the battery power capacity determined in decision block408along with the application battery estimate to determine whether the battery306currently has enough power to run the application for a typical use with the secondary graphics processor308processing the graphics for the application.

If, at decision block412, the secondary graphics processor controller304adetermines that the application battery estimate is below the power threshold (e.g., the application battery estimate threshold), the method400proceeds to block410and operates substantially as described above. Therefore, even if the battery306is determined to be above the power threshold at decision block408in the method400, the secondary graphics processor controller304amay determine that the application for which the start instruction was received at block402of the method400typically consumes more power than the battery306currently holds and, in response, the secondary graphics processor controller304awill prevent enablement of the secondary graphics processor such that the primary graphics processor (e.g., the iGPU) is used to process graphics for the application. Thus, if the application for which the start instruction was received at block402of the method400includes an application profile on the list in the secondary graphics processor driver304b, the secondary processor driver304bwould conventionally power up the dGPU, launch the application using the dGPU, and keep the dGPU active until the application was ended. However, at decision blocks408and412and block410of the method400, the secondary graphics processor controller304awill prevent enablement of the secondary graphics processor308such that the primary graphics processor (e.g., the iGPU) processes graphics for the application in response to the power capacity of the battery being above the power threshold but too low for a typical use of the application. For example, the iGPU may be processing graphics for applications running on the IHS200, and at blocks402,404,408,412, and410of the method400, an application that would normally have its graphics processed by the dGPU will instead have its graphics processed only by the iGPU due to the power capability of the battery306being above a power threshold but still insufficient to run the application.

If, at decision block412, the secondary graphics processor controller304adetermines that the application battery estimate is above the power threshold, the method400then proceeds to decision block414where the secondary graphics processor controller304adetermines whether an application profile exists for the application for which a start instruction was received in block402of the method400. As discussed above, the secondary graphics processor driver304bincludes a list of application profiles which, upon receiving an instruction to start up of one of the applications associated with an application profile on that list, will conventionally cause the secondary graphics processor driver304bto enable the secondary graphics processor308(e.g., the dGPU) for processing graphics for the application. At decision block414, the secondary graphics processor controller304adetermines whether the application for which the start instruction was received in block402of the method400is associated with an application profile on the list in the secondary graphics processor driver304b. If, at decision block414, the secondary graphics processor controller304adetermines that the application for which the start instruction was received in block402is not associated with an application profile in the list in the secondary graphics processor driver304b, the method400proceeds to block406where the default policy for the application is followed, discussed above.

If, at decision block414, the secondary graphics processor controller304adetermines that the application for which the start instruction was received in block402is associated with an application profile in the list in the secondary graphics processor driver304b, the method400proceeds to decision block416the secondary graphics processor controller304adetermines whether the application profile includes instructions to use the primary graphics processor (e.g., the iGPU) to process graphics for the application or the secondary graphics processor (e.g., the dGPU) to process graphics for the application. If, at decision block416, the secondary graphics processor controller304adetermines that the application profile includes instructions to use the primary graphics processor to process graphics, the method400proceeds to block410. Thus, in an embodiment, if the battery306and the application battery estimate are not below the power threshold, an application profile for the application exists, and the application profile includes instructions to use the primary graphics processor to process graphics, the primary graphics processor will be used to process graphics for the application. An example of this embodiment includes the start of an application that is not relatively graphics intensive, followed by the iGPU, which is currently processing graphics for other applications running on the IHS200, processing the graphics for the just-started application.

If, at decision block416, the secondary graphics processor controller304adetermines that the application profile includes instructions to use the secondary graphics processor to process graphics, the method400proceeds to block418where the secondary graphics processor308is used to process the graphics for the application. At block418, the secondary processor driver304benables the secondary graphics processor308for processing graphics for the application. Thus, in an embodiment, if the battery306and the application battery estimate are not below the power threshold, an application profile for the application exists, and the application profile includes instructions to use the secondary graphics processor to process graphics, the secondary graphics processor will be used to process graphics for the application. An example of this embodiment includes the start of an application that is relatively graphics intensive, and the method400results the secondary graphics processor controller304apowering up the dGPU, launching the application using the dGPU, and keeping the dGPU active to process graphics for the application until the application ends.

In some embodiments, the iGPU performs all of the graphics processing for the IHS unless the method400reaches block418. In some embodiments, at block418of the method400, the dGPU performs all of the graphics processing for the application for which the start up instruction was received in block402of the method400. In other embodiments, at block418of the method400, the dGPU performs the heavy rendering of graphics processed for the application for which the start up instruction was received in block402of the method400, and the iGPU may perform minor graphics processing operations. One of skill in the are will recognize that the dGPU will typically consume much more power than the iGPU, and limiting the use of the dGPU to situations where there is sufficient power for the IHS to consume will provide IHS users with a better experience.

Thus, a system and method for controlling a secondary graphics processor has been provided that only enables a secondary graphics processor to process graphics for an application, which would otherwise have its graphics processed by the secondary graphics processor, if a battery that supplies power to the system includes a power capability that is above a predetermined threshold. If the power capability of the battery is below the predetermined threshold, a primary graphics processor will process graphics for the application. In an IHS with an “iGPU with secondary dGPU” or “Switchable Graphics” topology, this results in the iGPU processing graphics for any application that is run on the IHS unless the application is both associated with an application profile that instructs use of the dGPU for processing graphics for the application and the battery in the IHS has threshold power capability such that the dGPU will run the application without an undesirable depletion of the batter. Such systems and methods override conventional graphics processor switching algorithms such that the IHS may conserve power, which is particularly beneficial in a limited power situation such as when the IHS is using battery power.