US8233000B1 - System and method for switching between graphical processing units - Google Patents

System and method for switching between graphical processing units Download PDF

Info

Publication number
US8233000B1
US8233000B1 US11/937,468 US93746807A US8233000B1 US 8233000 B1 US8233000 B1 US 8233000B1 US 93746807 A US93746807 A US 93746807A US 8233000 B1 US8233000 B1 US 8233000B1
Authority
US
United States
Prior art keywords
dgpu
igpu
graphics
buffer
operating system
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active, expires
Application number
US11/937,468
Inventor
Franck R. Diard
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Priority to US11/937,468 priority Critical patent/US8233000B1/en
Assigned to NVIDIA CORPORATION reassignment NVIDIA CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: DIARD, FRANCK R.
Application granted granted Critical
Publication of US8233000B1 publication Critical patent/US8233000B1/en
Active legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3265Power saving in display device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3293Power saving characterised by the action undertaken by switching to a less power-consuming processor, e.g. sub-CPU
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/363Graphics controllers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2330/00Aspects of power supply; Aspects of display protection and defect management
    • G09G2330/02Details of power systems and of start or stop of display operation
    • G09G2330/021Power management, e.g. power saving
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/06Use of more than one graphics processor to process data before displaying to one or more screens
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Definitions

  • the present invention relates generally to the field of graphics processing and more specifically to a system and method for switching between graphical processing units.
  • a typical computing system includes a central processing unit (CPU), a graphics processing unit (GPU), a system memory, a display device, and an input device.
  • CPU central processing unit
  • GPU graphics processing unit
  • system memory a display device
  • input device an input device.
  • the CPU usually executes the overall structure of the software application and configures the GPU to perform specific tasks in the graphics pipeline (the collection of processing steps performed to transform 3-D images into 2-D images).
  • Some software applications such as web browsers and word processors, perform well on most computing systems.
  • Other software applications such as modern 3-D games and video processors, are more graphics-intensive and may perform better on computing systems which include a relatively high performance GPU with a rich graphics feature set.
  • GPUs typically exhibit a trade-off between graphics performance and power consumption; GPUs with higher performance usually consume more power than GPUs with lower performance. This trade-off is exemplified by two types of GPUs: discrete GPUs (DGPUs) and integrated GPUs (IGPUs).
  • DGPU discrete GPUs
  • IGPU integrated GPUs
  • a DGPU is often part of a discrete graphics card that includes dedicated memory and is plugged into a slot in the computing system.
  • An IGPU is part of the main chipset that is wired into the motherboard of the computing system and may share the system memory with the CPU.
  • a DGPU has higher performance, but consumes more power than an IGPU.
  • a DPGU may be preferred.
  • an IGPU may provide adequate performance while maximizing the battery life.
  • Some computing systems include both a DGPU and an IGPU, allowing the user to tune the graphics performance and the power consumption of the computing system based on the situation.
  • the user may choose to maximize graphics performance by using the DGPU or to minimize power consumption by using the IGPU.
  • the user attaches the display to the desired GPU.
  • the user manually unplugs the display device from the video connector for the DGPU and subsequently the user plugs the display device into the video connector for the IGPU.
  • One drawback to this approach is that it is manually intensive and time consuming.
  • the display will be blank during the GPU transition.
  • a manual switch is used to select between the DGPU and the IGPU, then the computing system is rebooted to effect the GPU change.
  • This solution reduces the manual effort, but such a solution does not necessarily reduce the time required to switch between the GPUs. Furthermore, any running applications will terminate when the computing system is rebooted.
  • One embodiment of the present invention sets forth a method for switching rendering operations from an integrated graphics processing unit (IGPU) to a discrete graphics processing unit (DGPU).
  • the method includes the steps of causing a screen shot of a current display to be placed in a first DGPU display buffer included in a local memory of the IGPU, pointing an IGPU digital-to-analog converter (DAC) to the first DGPU display buffer, where the IGPU DAC is coupled to a display device, when queried by an operating system, communicating to the operating system that the DGPU is coupled to the display device, enabling the DGPU, and inserting rendered data from a local memory of the DGPU into the local memory of the IGPU for display.
  • IGPU integrated graphics processing unit
  • DGPU discrete graphics processing unit
  • One advantage of the disclosed method is that it enables application programs to operate using the either the IGPU or the DGPU without terminating the application programs or rebooting the computing device. And, since the display device may be driven by either GPU, switching between the GPUs may be accomplished without changing the connection to the display device.
  • FIG. 1 is a conceptual diagram of a computing system in which one or more aspects of the invention may be implemented
  • FIG. 2 is a conceptual diagram of certain elements in the computing system of FIG. 1 that enable different operating modes, according to one embodiment of the invention
  • FIG. 3 is a flow diagram of method steps for transitioning to a hybrid graphics mode, according to one embodiment of the invention.
  • FIG. 4 is a flow diagram of method steps executed by the operating system to switch the GPU that renders the graphics images for the computing system, according to one embodiment of the invention
  • FIG. 5 is a flow diagram of method steps executed by the graphics driver for transitioning to and operating in the hybrid graphics mode from the integrated graphics mode, according to one embodiment of the invention.
  • FIG. 6 is a flow diagram of method steps for transitioning from the hybrid graphics mode to the integrated graphics mode, according to one embodiment of the invention.
  • FIG. 1 is a conceptual diagram of a computing system 100 in which one or more aspects of the invention may be implemented.
  • the computing system 100 includes a central processing unit (CPU) 102 , input devices 110 , a system memory 104 , an integrated graphics processing subsystem 106 , a discrete graphics processing system 108 , a video cable 132 , and a display device 110 .
  • the CPU 102 and portions of the integrated graphics processing subsystem 106 may be integrated into a single processing unit.
  • Communication paths interconnecting the various components in FIG. 1 may be implemented using any suitable bus or point-to-point communication protocol(s), and connections between different devices may use different protocols as is known in the art.
  • the CPU 102 connects to the input devices 110 , the system memory 104 , the integrated graphics processing subsystem 106 , and the discrete graphics processing subsystem 108 via a bus 140 .
  • the CPU 102 receives user input from the input devices 110 , executes programming instructions stored in the system memory 104 , operates on data stored in the system memory 104 , and configures either the integrated graphics processing subsystem 106 or the discrete graphics processing subsystem 108 to perform specific tasks in the graphics pipeline. In alternate embodiments, the CPU 102 may configure the integrated graphics processing subsystem 106 and the discrete graphics processing subsystem 108 to work together to perform specific tasks.
  • the system memory 104 typically includes dynamic random access memory (DRAM) used to store programming instructions and data for processing by the CPU 102 , the integrated graphics processing subsystem 106 , and the discrete graphics processing subsystem 108 .
  • DRAM dynamic random access memory
  • the integrated graphics processing subsystem 106 and the discrete graphics processing subsystem 108 receive instructions transmitted by the CPU 102 and process the instructions in order to render graphics images.
  • the integrated graphics processing subsystem 106 is configured to convey these rendered graphics images through the video cable 132 to the display device 112 . In alternate embodiments, there may be additional display devices connected to either the integrated graphics processing subsystem 106 or the discrete graphics processing subsystem 108 .
  • the system memory 104 includes an operating system (OS) 114 , one or more application programs 116 , a graphics driver 118 , and one or more service daemons 120 .
  • the operating system 114 is typically the master control program of the computing system 100 .
  • the operating system 114 manages the resources of the computing system 100 , such as the system memory 104 , and forms a software platform on top of which the application program(s) 116 may run.
  • the applications program 116 transmits instructions that are designed to operate within the integrated graphics processing subsystem 106 or the discrete graphics processing subsystem 108 to the graphics driver 118 .
  • the graphics driver 118 is configured to translate these instructions into machine code programs that execute on components within the integrated graphics processing subsystem 106 and the discrete graphics processing subsystem 108 .
  • the service daemon 120 is a program that runs unattended and provides background services in the computing system 100 , such as controlling the mail server, the printer, the web server, or the display.
  • the service daemon 120 may make requests of other programs, such as the operating system 114 , application program 116 , and the graphics driver 118 .
  • the integrated graphics processing subsystem 106 includes an integrated graphics processing unit (IGPU) 128 , an IGPU local memory 126 , and a video connector 130 .
  • the IGPU 128 is part of the main chipset that is wired into the motherboard of the computing system 100 .
  • the IGPU 126 may receive instructions transmitted from the graphics driver 118 , process the instructions in order to render graphics images, and store these images in the IGPU local memory 126 .
  • the IGPU 128 may be provided with any amount of IGPU local memory 126 and may use both IGPU local memory 126 and system memory 104 . Further, in alternative embodiments, the IGPU local memory 126 may be incorporated into the system memory 104 .
  • the IGPU 128 includes an IGPU digital-to-analog converter (DAC) 136 .
  • the IGPU DAC 136 is configured to convert digital graphical images from the IGPU local memory 126 to analog graphics images and, then, transmit these analog graphics images through the video connector 130 and the video cable 132 to drive the display device 112 .
  • the video connector 130 may be any connector, such as a video graphics array (VGA) connector, capable of passing an analog graphics image through a video cable 132 to the display device 112 .
  • the display device 112 is an output device capable of emitting a visual image corresponding to an input graphics image.
  • the display device 112 may be built using a cathode ray tube (CRT) monitor, a liquid crystal display (LCD), or any other suitable display system.
  • CTR cathode ray tube
  • LCD liquid crystal display
  • components within the integrated graphics processing subsystem 106 may also transmit digital graphics images from the IGPU local memory 126 directly through one or more connectors and video cables to one or more digital display devices.
  • components within the integrated graphics processing subsystem 108 may transmit digital graphics images from the IGPU local memory 126 through a digital video interface (DVI) connector and a cable to an LCD.
  • DVI digital video interface
  • the computing system 100 also includes the discrete graphics processing subsystem 108 .
  • the discrete graphics processing subsystem 108 includes a discrete graphics processing unit (DGPU) 124 and a DGPU local memory 122 .
  • the discrete graphics processing subsystem 108 may be part of a discrete graphics card that is connected to the motherboard of the computing system 100 via an expansion slot (e.g., PCI Express or Accelerated Graphics Port). As previously described herein, the discrete graphics processing subsystem 108 has higher performance and a richer graphics feature set than the integrated processing subsystem 106 , but consumes more power.
  • the DGPU 126 may receive instructions transmitted from the graphics driver 118 , processes the instructions in order to render graphics images, and store these images in the DGPU local memory 122 .
  • the DGPU 124 may be provided with any amount of DGPU local memory 122 and may use both the DGPU local memory 122 and system memory 104 . As shown, the discrete graphics processing subsystem 108 is not connected directly to a display device. Instead, as set forth in greater detail herein, the graphics driver 118 may be configured to transmit the graphics images rendered by the DGPU 124 from the DGPU local memory 122 to the IGPU local memory 126 , where the IGPU DAC 136 may convert these digital graphics images to analog graphics images. The IGPU DAC 126 then transmits these analog graphics images to the display device 112 that is connected to the integrated graphics processing subsystem 106 .
  • the discrete graphics processing subsystem 108 may also include a DAC and a video connector. This video connector may be attached to a display device.
  • the DGPU 124 may render digital graphics images, use the DAC of the discrete graphics processing subsystem 108 to convert these digital graphics images to analog graphics images, and use these analog graphics images to drive the display device connected to the discrete graphics processing subsystem 108 . Further, the DGPU 124 may also transmit the rendered digital graphics images to the IGPU local memory 126 , where these images may also be used by the IGPU 128 to drive the display device 112 that is connected to the integrated graphics processing subsystem 106 .
  • the computing system 100 may render graphics images on the DGPU 124 and, then, display these graphics images simultaneously on both a LCD panel of a laptop connected to the integrated graphics processing subsystem 106 and a projector connected to the discrete graphics processing subsystem 108 .
  • FIG. 2 is a conceptual diagram of certain elements in the computing system 100 of FIG. 1 that enable different operating modes, according to one embodiment of the invention.
  • the computing system 100 uses a single graphics driver 118 , a single DAC (the IGPU DAC 136 ), and a single display device 112 for displaying rendered graphics images.
  • the computing system 100 may operate in either a power-saving integrated graphics mode, using the IGPU 136 to render graphics images, or a high-performance hybrid graphics mode, using the DGPU 124 to render graphics images. Further, the computing system 100 may be configured to switch between these two graphics modes dynamically, without rebooting the computing system 100 or reconnecting the display device 112 .
  • the computing system 100 may be configured to switch to the hybrid graphics mode whenever an application program 116 needs the additional performance of the DGPU 124 or features that are provided only by the DGPU 124 .
  • transitions between the two graphics modes may be triggered by events such as a switch to battery power or a certain type of user interaction.
  • the graphics driver 118 communicates with both the integrated graphics processing subsystem 106 and the discrete graphics processing subsystem 108 using a stream of commands called a “push buffer”.
  • the graphics driver 118 uses the push buffer to configure the integrated graphics processing subsystem 106 and the discrete graphics processing subsystem 108 to implement the graphics commands from the application program 116 (not shown in FIG. 2 ).
  • the graphics driver 118 uses the IGPU 128 to both render and display graphics images.
  • the graphics driver 118 uses the DGPU 124 to render graphics images and the IGPU DAC 136 to display these images. Since, in this latter mode, the DGPU 124 is rendering the graphics images, the applications program 116 may use the full capabilities of the DGPU 124 .
  • the graphics driver 118 also uses the push buffer to transition between these two graphics modes.
  • the graphics driver 118 may disable the discrete graphics processing subsystem 108 . Further, when the discrete graphics processing subsystem 108 is disabled, the service daemon 120 (also not shown in FIG. 2 ) may power down the discrete graphics processing subsystem 108 to reduce the power consumption of the computing system 100 . When the computing system 100 is operating in the hybrid graphics mode, the graphics driver 118 may disable portions of the integrated graphics processing subsystem 106 , but does not disable the IGPU DAC 136 .
  • the IGPU local memory 126 includes an IGPU display buffer 204 , a DGPU display buffer 1 206 , and a DGPU display buffer 2 208 .
  • the IGPU DAC 136 is configured to convert digital graphics images stored in the IGPU local memory 126 to analog graphics images that may drive the display device 112 .
  • the graphics driver 118 configures the IGPU DAC 136 to display the graphics images stored in the IGPU display buffer 204 .
  • the graphics driver 118 configures the IGPU DAC 136 to alternatively display the graphics images stored in the DGPU display buffer 1 206 and the DGPU display buffer 2 208 .
  • Double-buffering the graphics images in this fashion allows the DGPU 124 to copy rendered graphics images to one DGPU display buffer 206 or 208 while the other DGPU display buffer 206 or 208 drives the IGPU DAC 136 and, thus, the display device 112 .
  • the IGPU display buffer 204 may be replaced with two buffers, three buffers, or any other technically feasible buffering system.
  • the DGPU display buffers 206 and 208 may be replaced with one buffer, three buffers, or any other technically feasible buffering system.
  • the graphics driver 118 uses the push buffer to synchronize the display buffer-flips (transitions from displaying one buffer to another) to avoid glitching and tearing of the images displayed on the display device 112 .
  • the graphics driver 118 may use the push buffer to take a screen shot of the current display device 112 and place this image in the DGPU display buffer 1 206 .
  • the graphics driver 118 may use the push buffer to execute a buffer-flip, setting the IGPU DAC 136 to display the contents of the DGPU display buffer 1 206 instead of the contents of the IGPU display buffer 204 .
  • the display device 112 continually displays the same image during the transition, thereby avoiding glitches. Subsequently, while in hybrid graphics mode, the graphics driver 112 uses a memory blit (a common process for copying the contents of a block of memory from one location to another) and a buffer-flip to drive the display device 112 using new graphics images rendered by the DGPU 124 .
  • a memory blit a common process for copying the contents of a block of memory from one location to another
  • a buffer-flip to drive the display device 112 using new graphics images rendered by the DGPU 124 .
  • a “present” command may trigger the graphics driver 118 to insert the following sequence of commands into the push buffer for purposes of driving the display device 112 using new graphics images rendered by the DGPU 124 .
  • the graphics driver 118 may insert a peer-to-peer direct memory access (DMA) blit command into the push buffer. This command copies graphics images that are rendered by the DGPU 124 from the DGPU local memory 122 to the DGPU display buffer 2 208 within the IGPU local memory 126 .
  • DMA peer-to-peer direct memory access
  • the graphics driver 118 may insert a buffer-flip command to point the IGPU DAC 136 to the DGPU display buffer 2 208 instead of the DGPU display buffer 1 206 .
  • the graphics driver 118 synchronizes the buffer-flip and the scan-out of the IGPU DAC 136 in any technically feasible fashion to avoid flickering and tearing the graphics images displayed on the display device 112
  • FIG. 3 is a flow diagram of method steps for transitioning to a hybrid graphics mode, according to one embodiment of the invention. Although the method steps are described in conjunction with the systems for FIGS. 1-2 , persons skilled in the art will understand that any system that performs the method steps, in any order, is within the scope of the invention.
  • the method 300 begins at step 302 , where the computing system 100 of FIG. 1 is operating in the integrated graphics mode and the service daemon 120 tells the operating system 114 to notify the service daemon 120 whenever a new application program 116 wants to start execution.
  • the operating system 114 notifies the service daemon 120 that a new application program 116 wants to start execution.
  • the service daemon 120 may evaluate the new application program 116 to determine if the application program 116 would benefit from the additional graphics performance of the DGPU 124 .
  • the service daemon 120 may perform this evaluation in any technically feasible fashion.
  • the service daemon 120 may compare the name of the application program 116 to see if it matches any of the names in a list of application programs that are to be run using the DGPU 124 . If the service daemon 120 determines that the application program 116 is to be run using the IGPU 128 , then the computing system 100 continues to operate in the integrated graphics mode, and the method 300 returns to step 304 , where the service daemon 120 waits for another application program 116 to start execution. However, if the service daemon 120 determines that the application program 116 is to be run using the DGPU 124 , then the method proceeds to step 308 .
  • step 308 the service daemon 120 powers up the discrete graphics processing subsystem 108 .
  • step 310 the service daemon 120 asks the graphics driver 118 to switch to the hybrid graphics mode. Note that this step is described in greater detail below in conjunction with FIG. 5 .
  • step 312 the service daemon 120 asks the operating system 114 to change the GPU that renders the graphics images for the computing system 100 from the IGPU 128 to the DGPU 124 .
  • the capability of the operating system 114 to switch GPUs is leveraged to switch all application programs currently running on the operating system 114 from using the IGPU 128 to render graphics images to using the DGPU 124 to render graphics images.
  • the step 312 is a specific application of the method steps executed by the operating system 114 to switch GPUs, which are described in greater detail below in conjunction with FIG. 4 .
  • the service daemon 120 waits for the operating system 114 to acknowledge that the GPU has been successfully switched to the DGPU 124 .
  • the service daemon 120 tells the application program 116 that it may start execution. Since the computing system 100 is now operating in the hybrid graphics mode, the application program 116 will use the DGPU 124 to render graphics images. Further, all application programs that start while the computing system 100 is operating in hybrid graphics mode will automatically use the DGPU 124 to render graphics images.
  • step 318 the service daemon 120 continually monitors the application programs, including the application program 116 , to determine when the additional graphics processing power of the DGPU 124 is no longer needed.
  • the service daemon 120 makes such a determination, the service daemon 120 switches the computing system 100 from using the hybrid graphics mode back to using the integrated graphics mode. The method steps associated with this switch are detailed in FIG. 6 .
  • FIG. 4 is a flow diagram of method steps executed by the operating system 114 to switch the GPU that renders the graphics images for the computing system 100 of FIG. 1 , according to one embodiment of the invention.
  • the method 400 is a generic example of the typical steps executed by an operating system to switch the GPU that renders the graphics images for a computing system.
  • the methods 300 of FIG. 3 , 500 of FIG. 5 , and 600 of FIG. 6 leverage this generic behavior of the operating system to effect seamless transitions between operating the computing system 100 in the integrated graphics mode and the hybrid graphics mode.
  • the service daemon 120 asks the operating system 114 to change the GPU that renders the graphics images for the computing system 100 from the IGPU 128 to the DGPU 124 .
  • the method 400 begins at step 402 , where the service daemon 120 asks the operating system 114 to switch the GPU that renders the graphics images for the computing system 100 from the current GPU to a new GPU.
  • the operating system 114 asks the graphics driver 118 if the new GPU is connected to a display device, such as the display device 112 .
  • the graphics driver 118 says that there is no display device connected to the new GPU, then the operating system 114 proceeds to step 418 .
  • the operating system 114 tells the service daemon 120 that the operating system 114 was unable to switch the GPU, and the method 400 terminates.
  • the graphics driver 118 says that there is a display device connected to the new GPU, then the method 400 proceeds to step 408 .
  • step 408 the operating system 114 tells the application programs 116 that are using the current GPU that the display device is lost.
  • the applications programs 116 may respond to this notification by suspending certain commands until the operating system 114 notifies the applications programs 116 that a display device is, again, available.
  • step 410 the operating system 114 asks the graphics driver 118 to disable the current GPU.
  • step 412 the operating system 114 asks the graphics driver 118 to enable the new GPU.
  • step 414 the operating system 114 tells the application programs 116 to reconnect to the display device connected to the new GPU.
  • the application programs 116 interact with the new GPU, thus all subsequent graphics calls utilize the full capabilities of the new GPU.
  • step 416 the operating system 114 informs the service daemon 120 that the GPU has been successfully switched, and the method 400 terminates.
  • FIG. 5 is a flow diagram of method steps executed by the graphics driver 118 for transitioning to and operating in the hybrid graphics mode from the integrated graphics mode, according to one embodiment of the invention.
  • the method steps are described in conjunction with the systems for FIGS. 1-2 , persons skilled in the art will understand that any system that performs the method steps, in any order, is within the scope of the invention.
  • the method 500 begins at step 504 , where the graphics driver 118 uses the push buffer to configure the IGPU 128 to place a screen shot of the current display device 112 , which is connected to the integrated graphics processing subsystem 106 , in the DGPU display buffer 1 206 within the IGPU local memory 126 .
  • the graphics driver 118 uses the push buffer to configure the IGPU DAC 136 to display the contents of the DGPU display buffer 1 206 instead of the contents of the IGPU display buffer 204 .
  • the graphics driver 118 may synchronize this buffer-flip with the scan-out of the IGPU DAC 136 to ensure that the display device 112 maintains a consistent image and does not flicker during this transition to the hybrid graphics mode.
  • the graphics driver 118 configures itself to trap and hold any received graphics calls that involve updating the display, such as “present” calls, until the transition to the hybrid graphics mode is complete.
  • the application programs 116 disconnect from the IGPU 128 in step 408 of method 400 , the IGPU DAC 136 will continue to display the screen shot taken in step 502 .
  • the graphics driver 118 waits for the operating system 112 to ask the graphics driver 118 if the DGPU 124 is connected to a display device. As shown in the computing system 100 of FIG. 2 , the DGPU 124 is not directly attached to a display device. If the graphics driver 118 were not transitioning into the hybrid graphics mode, then the graphics driver 118 would determine that the DGPU 124 was not connected to a display device and would relay this response to the operating system 112 . However, since the graphics driver 118 is transitioning into the hybrid graphics mode, the graphics driver 118 is configured to inform the operating system 112 that the DGPU 124 is connected to a display device—display device 112 . Informing the operating system 112 that the DGPU 124 is connected to the display device 112 in this manner allows the operating system 112 to successfully execute the method 400 , thereby changing the primary display to the DGPU 124 .
  • step 512 the graphics driver 118 waits for the operating system 112 to ask the graphics driver 118 to enable the DGPU 124 .
  • the method proceeds to step 514 .
  • step 514 the graphics driver 118 waits for the operating system 112 to ask the graphics driver 118 to disable the IGPU 124 .
  • the graphics driver 118 uses the IGPU DAC 136 to display the graphics images rendered by the DGPU 124 . Therefore, in step 514 , the graphics driver 118 does not disable the entire IGPU 124 .
  • the graphics driver 118 disables most of the IGPU 124 , but keeps the IGPU DAC 136 alive. This technique permits the DGPU 124 to use the IGPU DAC 136 and the display device 112 without being directly connected to the display device 112 . The graphics driver 118 then begins operating in the hybrid graphics mode.
  • the graphics driver 118 processes a graphics call from one of the application programs 116 .
  • the graphics driver 118 determines if the graphics call is an update to the display device 112 , such as a “present” call. If the graphics call is not an update to the display device 112 , then the graphics driver 118 proceeds to step 524 .
  • the graphics driver 118 inserts a command into the push buffer to configure the DGPU 124 to execute the graphics call. However, if the graphics call is an update to the display device 112 , then the graphics driver 118 intercepts the graphics call and executes steps 520 and 522 .
  • the graphics driver 118 manipulates the push buffer to ensure that the graphics images currently rendered on the DGPU 124 are used to drive the display device 112 . More specifically, in step 520 , the graphics driver 118 inserts a peer-to-peer DMA blit command into the push buffer. This command configures the DGPU 124 to copy the graphics images that are rendered on the DGPU from the DGPU local memory 122 to one of the two DGPU display buffers 204 and 206 within the IGPU local memory 126 .
  • the graphics driver 118 selects the other DGPU display buffer 204 or 206 as the recipient of this blit operation.
  • the graphics driver 118 inserts a buffer-flip call into the push buffer.
  • the buffer-flip call configures the IGPU DAC 136 to point to the DGPU display buffer 204 or 206 , as the case may be, that was the recipient of the rendered graphics image in step 520 .
  • the IGPU DAC 136 displays the graphics images rendered by the DGPU 124 on the display device 112 .
  • step 522 or 524 the method 500 returns to step 516 where the graphics driver 118 processes the next graphics call.
  • the method 500 continues to execute steps 516 through 524 , processing graphics calls from the application programs 116 , until the graphics driver 118 receives a request to transition out of the hybrid graphics mode, back to the integrated graphics mode.
  • FIG. 6 is a flow diagram of method steps for transitioning from the hybrid graphics mode to the integrated graphics mode, according to one embodiment of the invention. Although the method steps are described in conjunction with the systems for FIGS. 1-2 , persons skilled in the art will understand that any system that performs the method steps, in any order, is within the scope of the invention.
  • the method 600 begins at step 602 , where the service daemon 120 determines that the last of the application programs 116 that are to be run using the DGPU 124 has terminated.
  • the service daemon 120 tells the graphics driver 118 to prepare to switch from the hybrid graphics mode to the integrated graphics mode.
  • the graphics driver 118 uses the push buffer to configure the DGPU 124 to place a screen shot of the current display device 112 in the IGPU display buffer 204 .
  • the graphics driver 118 uses the push buffer to configure the IGPU DAC 136 to display the contents of the IGPU display buffer 204 .
  • step 610 the graphics driver 118 configures itself to trap and hold any received graphics calls that involve updating the display, such as “present” calls, until the transition to the integrated graphics mode is complete.
  • the steps 606 through 610 ensure that the display device 112 continues to display the current screen shot until the computing system 100 begins operating in the integrated graphics mode.
  • step 612 the service daemon 120 asks the operating system 114 to change the GPU that renders the graphics images for the computing system 100 from the DGPU 124 to the IGPU 128 .
  • This step is described above in conjunction with FIG. 4 .
  • the application programs 116 that are currently running on the operating system 114 disconnect from the DGPU 124 and reconnect to the IGPU 128 .
  • subsequent graphics calls received from the application programs 116 are automatically subject to the limitations of the IGPU 128 .
  • the service daemon 120 waits for the operating system 112 to acknowledge the GPU change.
  • step 616 the graphics driver 118 processes any held “present” calls and resumes processing all graphics calls, rendering and displaying using the IGPU 128 .
  • step 618 the service daemon 120 powers down the discrete graphics processing subsystem 108 , and the method 600 terminates. Powering-down the discrete graphics processing subsystem 108 may lead to considerable power savings as the computing system 100 continues to operate, which, among other things, can lead to prolonged battery life if the computing system 100 is a laptop running on battery power.
  • the graphics performance and the power consumption of a computing device may be tuned by dynamically switching between GPUs.
  • the computing system includes a single graphics driver, an IGPU, a DGPU, and a single display device connected to the IGPU DAC.
  • the server daemon may configure the graphics driver to operate in a hybrid graphics mode to maximize the graphics performance of the computing system.
  • the graphics driver renders graphic images using the DGPU, transmits the rendered graphics images from the DGPU local memory to the IGPU local memory using a peer-to-peer DMA blit, and displays the rendered graphics images on the display device using the IGPU DAC.
  • the server daemon may configure the graphics driver to operate in an integrated graphics mode, powering-down the DGPU to minimize the power consumption of the computing device. In this mode, the graphics driver renders and display graphics images using the IGPU.
  • the graphics driver While transitioning between GPUs, the graphics driver configures the IGPU DAC to display a screen shot of the last display image rendered by the current GPU so that the display device does not glitch. Furthermore, the graphics driver modifies the inherent GPU switching behavior of the operating system to disconnect running application programs from the current GPU and subsequently reconnect these application programs to the new GPU.
  • this technique allows the application programs to operate using the new GPU without terminating the application programs or rebooting the computing system. And, since the display device may be driven by either GPU, switching between the GPUs may be accomplished without changing the connection to the display device.
  • the discrete graphics processing subsystem may include multiple GPUs linked together to render graphics images in parallel.
  • aspects of the present invention may be implemented in hardware or software or in a combination of hardware and software.
  • One embodiment of the invention may be implemented as a program product for use with a computer system.
  • the program(s) of the program product define functions of the embodiments (including the methods described herein) and can be contained on a variety of computer-readable storage media.
  • Illustrative computer-readable storage media include, but are not limited to: (i) non-writable storage media (e.g., read-only memory devices within a computer such as CD-ROM disks readable by a CD-ROM drive, flash memory, ROM chips or any type of solid-state non-volatile semiconductor memory) on which information is permanently stored; and (ii) writable storage media (e.g., floppy disks within a diskette drive or hard-disk drive or any type of solid-state random-access semiconductor memory) on which alterable information is stored.
  • non-writable storage media e.g., read-only memory devices within a computer such as CD-ROM disks readable by a CD-ROM drive, flash memory, ROM chips or any type of solid-state non-volatile semiconductor memory
  • writable storage media e.g., floppy disks within a diskette drive or hard-disk drive or any type of solid-state random-access semiconductor memory

Abstract

One embodiment of the present invention sets forth a technique for dynamically switching between a power-saving integrated graphics processing unit (IGPU) and a higher-performance discrete graphics processing unit (DGPU). This technique uses a single graphics driver and a single digital-to-analog converter (DAC) and leverages the GPU switching capability of the operating system to ensure a seamless transition. When additional graphics performance is desired, the system enters a hybrid graphics mode. In this mode, the DGPU is powered-up, and the graphics driver maintains the current display, while the operating system switches applications running on the IGPU to the DGPU. While in the hybrid graphics mode, the DGPU performs the graphics processing, and the graphics driver transmits the rendered images from the DGPU to the IGPU local memory and, then, to the IGPU DAC. This image transmission allows applications to fully exploit the processing capabilities of the DGPU, while using the display device connected to the IGPU.

Description

BACKGROUND OF THE INVENTION
1. Field of the Invention
The present invention relates generally to the field of graphics processing and more specifically to a system and method for switching between graphical processing units.
2. Description of the Related Art
A typical computing system includes a central processing unit (CPU), a graphics processing unit (GPU), a system memory, a display device, and an input device. A variety of software applications may run on the computing system. The CPU usually executes the overall structure of the software application and configures the GPU to perform specific tasks in the graphics pipeline (the collection of processing steps performed to transform 3-D images into 2-D images). Some software applications, such as web browsers and word processors, perform well on most computing systems. Other software applications, such as modern 3-D games and video processors, are more graphics-intensive and may perform better on computing systems which include a relatively high performance GPU with a rich graphics feature set.
GPUs typically exhibit a trade-off between graphics performance and power consumption; GPUs with higher performance usually consume more power than GPUs with lower performance. This trade-off is exemplified by two types of GPUs: discrete GPUs (DGPUs) and integrated GPUs (IGPUs). A DGPU is often part of a discrete graphics card that includes dedicated memory and is plugged into a slot in the computing system. An IGPU is part of the main chipset that is wired into the motherboard of the computing system and may share the system memory with the CPU. Typically, a DGPU has higher performance, but consumes more power than an IGPU. For running graphics-intensive software applications, a DPGU may be preferred. However, for running less demanding software applications on a laptop, an IGPU may provide adequate performance while maximizing the battery life.
Some computing systems include both a DGPU and an IGPU, allowing the user to tune the graphics performance and the power consumption of the computing system based on the situation. In such a computing system, the user may choose to maximize graphics performance by using the DGPU or to minimize power consumption by using the IGPU. In one approach to setting the desired graphics performance, the user attaches the display to the desired GPU. In such an approach, to switch from the high-performance DGPU to the power-saving IGPU, the user manually unplugs the display device from the video connector for the DGPU and subsequently the user plugs the display device into the video connector for the IGPU. One drawback to this approach, however, is that it is manually intensive and time consuming. In addition, the display will be blank during the GPU transition. In another approach, a manual switch is used to select between the DGPU and the IGPU, then the computing system is rebooted to effect the GPU change. This solution reduces the manual effort, but such a solution does not necessarily reduce the time required to switch between the GPUs. Furthermore, any running applications will terminate when the computing system is rebooted.
As the foregoing illustrates, what is needed in the art is a more flexible technique for switching between an IGPU and a DGPU in a computing system.
SUMMARY OF THE INVENTION
One embodiment of the present invention sets forth a method for switching rendering operations from an integrated graphics processing unit (IGPU) to a discrete graphics processing unit (DGPU). The method includes the steps of causing a screen shot of a current display to be placed in a first DGPU display buffer included in a local memory of the IGPU, pointing an IGPU digital-to-analog converter (DAC) to the first DGPU display buffer, where the IGPU DAC is coupled to a display device, when queried by an operating system, communicating to the operating system that the DGPU is coupled to the display device, enabling the DGPU, and inserting rendered data from a local memory of the DGPU into the local memory of the IGPU for display.
One advantage of the disclosed method is that it enables application programs to operate using the either the IGPU or the DGPU without terminating the application programs or rebooting the computing device. And, since the display device may be driven by either GPU, switching between the GPUs may be accomplished without changing the connection to the display device.
BRIEF DESCRIPTION OF THE DRAWINGS
So that the manner in which the above recited features of the present invention can be understood in detail, a more particular description of the invention, briefly summarized above, may be had by reference to embodiments, some of which are illustrated in the appended drawings. It is to be noted, however, that the appended drawings illustrate only typical embodiments of this invention and are therefore not to be considered limiting of its scope, for the invention may admit to other equally effective embodiments.
FIG. 1 is a conceptual diagram of a computing system in which one or more aspects of the invention may be implemented;
FIG. 2 is a conceptual diagram of certain elements in the computing system of FIG. 1 that enable different operating modes, according to one embodiment of the invention;
FIG. 3 is a flow diagram of method steps for transitioning to a hybrid graphics mode, according to one embodiment of the invention;
FIG. 4 is a flow diagram of method steps executed by the operating system to switch the GPU that renders the graphics images for the computing system, according to one embodiment of the invention;
FIG. 5 is a flow diagram of method steps executed by the graphics driver for transitioning to and operating in the hybrid graphics mode from the integrated graphics mode, according to one embodiment of the invention; and
FIG. 6 is a flow diagram of method steps for transitioning from the hybrid graphics mode to the integrated graphics mode, according to one embodiment of the invention.
DETAILED DESCRIPTION
FIG. 1 is a conceptual diagram of a computing system 100 in which one or more aspects of the invention may be implemented. As shown, the computing system 100 includes a central processing unit (CPU) 102, input devices 110, a system memory 104, an integrated graphics processing subsystem 106, a discrete graphics processing system 108, a video cable 132, and a display device 110. In alternate embodiments, the CPU 102 and portions of the integrated graphics processing subsystem 106 may be integrated into a single processing unit. Communication paths interconnecting the various components in FIG. 1 may be implemented using any suitable bus or point-to-point communication protocol(s), and connections between different devices may use different protocols as is known in the art.
The CPU 102 connects to the input devices 110, the system memory 104, the integrated graphics processing subsystem 106, and the discrete graphics processing subsystem 108 via a bus 140. The CPU 102 receives user input from the input devices 110, executes programming instructions stored in the system memory 104, operates on data stored in the system memory 104, and configures either the integrated graphics processing subsystem 106 or the discrete graphics processing subsystem 108 to perform specific tasks in the graphics pipeline. In alternate embodiments, the CPU 102 may configure the integrated graphics processing subsystem 106 and the discrete graphics processing subsystem 108 to work together to perform specific tasks.
The system memory 104 typically includes dynamic random access memory (DRAM) used to store programming instructions and data for processing by the CPU 102, the integrated graphics processing subsystem 106, and the discrete graphics processing subsystem 108. The integrated graphics processing subsystem 106 and the discrete graphics processing subsystem 108 receive instructions transmitted by the CPU 102 and process the instructions in order to render graphics images. The integrated graphics processing subsystem 106 is configured to convey these rendered graphics images through the video cable 132 to the display device 112. In alternate embodiments, there may be additional display devices connected to either the integrated graphics processing subsystem 106 or the discrete graphics processing subsystem 108.
The system memory 104 includes an operating system (OS) 114, one or more application programs 116, a graphics driver 118, and one or more service daemons 120. The operating system 114 is typically the master control program of the computing system 100. Among other things, the operating system 114 manages the resources of the computing system 100, such as the system memory 104, and forms a software platform on top of which the application program(s) 116 may run. The applications program 116 transmits instructions that are designed to operate within the integrated graphics processing subsystem 106 or the discrete graphics processing subsystem 108 to the graphics driver 118. The graphics driver 118 is configured to translate these instructions into machine code programs that execute on components within the integrated graphics processing subsystem 106 and the discrete graphics processing subsystem 108. The service daemon 120 is a program that runs unattended and provides background services in the computing system 100, such as controlling the mail server, the printer, the web server, or the display. The service daemon 120 may make requests of other programs, such as the operating system 114, application program 116, and the graphics driver 118.
The integrated graphics processing subsystem 106 includes an integrated graphics processing unit (IGPU) 128, an IGPU local memory 126, and a video connector 130. In one embodiment, the IGPU 128 is part of the main chipset that is wired into the motherboard of the computing system 100. The IGPU 126 may receive instructions transmitted from the graphics driver 118, process the instructions in order to render graphics images, and store these images in the IGPU local memory 126. The IGPU 128 may be provided with any amount of IGPU local memory 126 and may use both IGPU local memory 126 and system memory 104. Further, in alternative embodiments, the IGPU local memory 126 may be incorporated into the system memory 104.
As also shown, the IGPU 128 includes an IGPU digital-to-analog converter (DAC) 136. The IGPU DAC 136 is configured to convert digital graphical images from the IGPU local memory 126 to analog graphics images and, then, transmit these analog graphics images through the video connector 130 and the video cable 132 to drive the display device 112. The video connector 130 may be any connector, such as a video graphics array (VGA) connector, capable of passing an analog graphics image through a video cable 132 to the display device 112. The display device 112 is an output device capable of emitting a visual image corresponding to an input graphics image. For example, the display device 112 may be built using a cathode ray tube (CRT) monitor, a liquid crystal display (LCD), or any other suitable display system. In some embodiments, there may be more than one display device 112 connected to the integrated graphics processing subsystem 106. In other embodiments, components within the integrated graphics processing subsystem 106 may also transmit digital graphics images from the IGPU local memory 126 directly through one or more connectors and video cables to one or more digital display devices. For example, components within the integrated graphics processing subsystem 108 may transmit digital graphics images from the IGPU local memory 126 through a digital video interface (DVI) connector and a cable to an LCD.
The computing system 100 also includes the discrete graphics processing subsystem 108. The discrete graphics processing subsystem 108 includes a discrete graphics processing unit (DGPU) 124 and a DGPU local memory 122. The discrete graphics processing subsystem 108 may be part of a discrete graphics card that is connected to the motherboard of the computing system 100 via an expansion slot (e.g., PCI Express or Accelerated Graphics Port). As previously described herein, the discrete graphics processing subsystem 108 has higher performance and a richer graphics feature set than the integrated processing subsystem 106, but consumes more power. The DGPU 126 may receive instructions transmitted from the graphics driver 118, processes the instructions in order to render graphics images, and store these images in the DGPU local memory 122. The DGPU 124 may be provided with any amount of DGPU local memory 122 and may use both the DGPU local memory 122 and system memory 104. As shown, the discrete graphics processing subsystem 108 is not connected directly to a display device. Instead, as set forth in greater detail herein, the graphics driver 118 may be configured to transmit the graphics images rendered by the DGPU 124 from the DGPU local memory 122 to the IGPU local memory 126, where the IGPU DAC 136 may convert these digital graphics images to analog graphics images. The IGPU DAC 126 then transmits these analog graphics images to the display device 112 that is connected to the integrated graphics processing subsystem 106.
In some embodiments, the discrete graphics processing subsystem 108 may also include a DAC and a video connector. This video connector may be attached to a display device. The DGPU 124 may render digital graphics images, use the DAC of the discrete graphics processing subsystem 108 to convert these digital graphics images to analog graphics images, and use these analog graphics images to drive the display device connected to the discrete graphics processing subsystem 108. Further, the DGPU 124 may also transmit the rendered digital graphics images to the IGPU local memory 126, where these images may also be used by the IGPU 128 to drive the display device 112 that is connected to the integrated graphics processing subsystem 106. For example, using this configuration, the computing system 100 may render graphics images on the DGPU 124 and, then, display these graphics images simultaneously on both a LCD panel of a laptop connected to the integrated graphics processing subsystem 106 and a projector connected to the discrete graphics processing subsystem 108.
FIG. 2 is a conceptual diagram of certain elements in the computing system 100 of FIG. 1 that enable different operating modes, according to one embodiment of the invention. As shown, the computing system 100 uses a single graphics driver 118, a single DAC (the IGPU DAC 136), and a single display device 112 for displaying rendered graphics images. The computing system 100 may operate in either a power-saving integrated graphics mode, using the IGPU 136 to render graphics images, or a high-performance hybrid graphics mode, using the DGPU 124 to render graphics images. Further, the computing system 100 may be configured to switch between these two graphics modes dynamically, without rebooting the computing system 100 or reconnecting the display device 112. For example, the computing system 100 may be configured to switch to the hybrid graphics mode whenever an application program 116 needs the additional performance of the DGPU 124 or features that are provided only by the DGPU 124. In other embodiments, transitions between the two graphics modes may be triggered by events such as a switch to battery power or a certain type of user interaction.
The graphics driver 118 communicates with both the integrated graphics processing subsystem 106 and the discrete graphics processing subsystem 108 using a stream of commands called a “push buffer”. The graphics driver 118 uses the push buffer to configure the integrated graphics processing subsystem 106 and the discrete graphics processing subsystem 108 to implement the graphics commands from the application program 116 (not shown in FIG. 2). While in the integrated graphics mode, the graphics driver 118 uses the IGPU 128 to both render and display graphics images. While in the hybrid graphics mode, the graphics driver 118 uses the DGPU 124 to render graphics images and the IGPU DAC 136 to display these images. Since, in this latter mode, the DGPU 124 is rendering the graphics images, the applications program 116 may use the full capabilities of the DGPU 124. The graphics driver 118 also uses the push buffer to transition between these two graphics modes.
When the computing system 100 is operating in the integrated graphics mode, the graphics driver 118 may disable the discrete graphics processing subsystem 108. Further, when the discrete graphics processing subsystem 108 is disabled, the service daemon 120 (also not shown in FIG. 2) may power down the discrete graphics processing subsystem 108 to reduce the power consumption of the computing system 100. When the computing system 100 is operating in the hybrid graphics mode, the graphics driver 118 may disable portions of the integrated graphics processing subsystem 106, but does not disable the IGPU DAC 136.
As shown, the IGPU local memory 126 includes an IGPU display buffer 204, a DGPU display buffer 1 206, and a DGPU display buffer 2 208. Again, the IGPU DAC 136 is configured to convert digital graphics images stored in the IGPU local memory 126 to analog graphics images that may drive the display device 112. In the integrated graphics mode, the graphics driver 118 configures the IGPU DAC 136 to display the graphics images stored in the IGPU display buffer 204. However, in the hybrid graphics mode, the graphics driver 118 configures the IGPU DAC 136 to alternatively display the graphics images stored in the DGPU display buffer 1 206 and the DGPU display buffer 2 208. Double-buffering the graphics images in this fashion allows the DGPU 124 to copy rendered graphics images to one DGPU display buffer 206 or 208 while the other DGPU display buffer 206 or 208 drives the IGPU DAC 136 and, thus, the display device 112. In alternative embodiments, the IGPU display buffer 204 may be replaced with two buffers, three buffers, or any other technically feasible buffering system. Similarly, in alternative embodiments, the DGPU display buffers 206 and 208 may be replaced with one buffer, three buffers, or any other technically feasible buffering system.
Since the computing system 110 and the display device 112 may be continually powered-up, the graphics driver 118 uses the push buffer to synchronize the display buffer-flips (transitions from displaying one buffer to another) to avoid glitching and tearing of the images displayed on the display device 112. For example, during the transition from the integrated graphics mode to the hybrid graphics mode, the graphics driver 118 may use the push buffer to take a screen shot of the current display device 112 and place this image in the DGPU display buffer 1 206. Then, the graphics driver 118 may use the push buffer to execute a buffer-flip, setting the IGPU DAC 136 to display the contents of the DGPU display buffer 1 206 instead of the contents of the IGPU display buffer 204. Using this technique, the display device 112 continually displays the same image during the transition, thereby avoiding glitches. Subsequently, while in hybrid graphics mode, the graphics driver 112 uses a memory blit (a common process for copying the contents of a block of memory from one location to another) and a buffer-flip to drive the display device 112 using new graphics images rendered by the DGPU 124.
Suppose for example, that the DGPU display buffer 1 206 is driving the display device 112. A “present” command may trigger the graphics driver 118 to insert the following sequence of commands into the push buffer for purposes of driving the display device 112 using new graphics images rendered by the DGPU 124. First, the graphics driver 118 may insert a peer-to-peer direct memory access (DMA) blit command into the push buffer. This command copies graphics images that are rendered by the DGPU 124 from the DGPU local memory 122 to the DGPU display buffer 2 208 within the IGPU local memory 126. Second, the graphics driver 118 may insert a buffer-flip command to point the IGPU DAC 136 to the DGPU display buffer 2 208 instead of the DGPU display buffer 1 206. The graphics driver 118 synchronizes the buffer-flip and the scan-out of the IGPU DAC 136 in any technically feasible fashion to avoid flickering and tearing the graphics images displayed on the display device 112
FIG. 3 is a flow diagram of method steps for transitioning to a hybrid graphics mode, according to one embodiment of the invention. Although the method steps are described in conjunction with the systems for FIGS. 1-2, persons skilled in the art will understand that any system that performs the method steps, in any order, is within the scope of the invention.
As shown, the method 300 begins at step 302, where the computing system 100 of FIG. 1 is operating in the integrated graphics mode and the service daemon 120 tells the operating system 114 to notify the service daemon 120 whenever a new application program 116 wants to start execution. In step 304, the operating system 114 notifies the service daemon 120 that a new application program 116 wants to start execution. At step 306, the service daemon 120 may evaluate the new application program 116 to determine if the application program 116 would benefit from the additional graphics performance of the DGPU 124. The service daemon 120 may perform this evaluation in any technically feasible fashion. For example, the service daemon 120 may compare the name of the application program 116 to see if it matches any of the names in a list of application programs that are to be run using the DGPU 124. If the service daemon 120 determines that the application program 116 is to be run using the IGPU 128, then the computing system 100 continues to operate in the integrated graphics mode, and the method 300 returns to step 304, where the service daemon 120 waits for another application program 116 to start execution. However, if the service daemon 120 determines that the application program 116 is to be run using the DGPU 124, then the method proceeds to step 308.
In step 308, the service daemon 120 powers up the discrete graphics processing subsystem 108. In step 310, the service daemon 120 asks the graphics driver 118 to switch to the hybrid graphics mode. Note that this step is described in greater detail below in conjunction with FIG. 5. In step 312, the service daemon 120 asks the operating system 114 to change the GPU that renders the graphics images for the computing system 100 from the IGPU 128 to the DGPU 124. During step 312, the capability of the operating system 114 to switch GPUs is leveraged to switch all application programs currently running on the operating system 114 from using the IGPU 128 to render graphics images to using the DGPU 124 to render graphics images. The step 312 is a specific application of the method steps executed by the operating system 114 to switch GPUs, which are described in greater detail below in conjunction with FIG. 4. At step 314, the service daemon 120 waits for the operating system 114 to acknowledge that the GPU has been successfully switched to the DGPU 124. In step 316, the service daemon 120 tells the application program 116 that it may start execution. Since the computing system 100 is now operating in the hybrid graphics mode, the application program 116 will use the DGPU 124 to render graphics images. Further, all application programs that start while the computing system 100 is operating in hybrid graphics mode will automatically use the DGPU 124 to render graphics images.
In step 318, the service daemon 120 continually monitors the application programs, including the application program 116, to determine when the additional graphics processing power of the DGPU 124 is no longer needed. When the service daemon 120 makes such a determination, the service daemon 120 switches the computing system 100 from using the hybrid graphics mode back to using the integrated graphics mode. The method steps associated with this switch are detailed in FIG. 6.
FIG. 4 is a flow diagram of method steps executed by the operating system 114 to switch the GPU that renders the graphics images for the computing system 100 of FIG. 1, according to one embodiment of the invention. Although the method steps are described in conjunction with the systems for FIGS. 1-2, persons skilled in the art will understand that any system that performs the method steps, in any order, is within the scope of the invention. The method 400 is a generic example of the typical steps executed by an operating system to switch the GPU that renders the graphics images for a computing system. The methods 300 of FIG. 3, 500 of FIG. 5, and 600 of FIG. 6 leverage this generic behavior of the operating system to effect seamless transitions between operating the computing system 100 in the integrated graphics mode and the hybrid graphics mode. For example, as previously described herein, in step 312 of FIG. 3 the service daemon 120 asks the operating system 114 to change the GPU that renders the graphics images for the computing system 100 from the IGPU 128 to the DGPU 124.
The method 400 begins at step 402, where the service daemon 120 asks the operating system 114 to switch the GPU that renders the graphics images for the computing system 100 from the current GPU to a new GPU. In step 404, the operating system 114 asks the graphics driver 118 if the new GPU is connected to a display device, such as the display device 112. At step 406, if the graphics driver 118 says that there is no display device connected to the new GPU, then the operating system 114 proceeds to step 418. In step 418, the operating system 114 tells the service daemon 120 that the operating system 114 was unable to switch the GPU, and the method 400 terminates. However, at step 406, if the graphics driver 118 says that there is a display device connected to the new GPU, then the method 400 proceeds to step 408.
In step 408, the operating system 114 tells the application programs 116 that are using the current GPU that the display device is lost. The applications programs 116 may respond to this notification by suspending certain commands until the operating system 114 notifies the applications programs 116 that a display device is, again, available. In step 410, the operating system 114 asks the graphics driver 118 to disable the current GPU. In step 412, the operating system 114 asks the graphics driver 118 to enable the new GPU. In step 414, the operating system 114 tells the application programs 116 to reconnect to the display device connected to the new GPU. Advantageously, by reconnecting in this fashion, the application programs 116 interact with the new GPU, thus all subsequent graphics calls utilize the full capabilities of the new GPU. In step 416, the operating system 114 informs the service daemon 120 that the GPU has been successfully switched, and the method 400 terminates.
FIG. 5 is a flow diagram of method steps executed by the graphics driver 118 for transitioning to and operating in the hybrid graphics mode from the integrated graphics mode, according to one embodiment of the invention. Although the method steps are described in conjunction with the systems for FIGS. 1-2, persons skilled in the art will understand that any system that performs the method steps, in any order, is within the scope of the invention.
As shown, the method 500 begins at step 504, where the graphics driver 118 uses the push buffer to configure the IGPU 128 to place a screen shot of the current display device 112, which is connected to the integrated graphics processing subsystem 106, in the DGPU display buffer 1 206 within the IGPU local memory 126. In step 506, the graphics driver 118 uses the push buffer to configure the IGPU DAC 136 to display the contents of the DGPU display buffer 1 206 instead of the contents of the IGPU display buffer 204. In various embodiments, the graphics driver 118 may synchronize this buffer-flip with the scan-out of the IGPU DAC 136 to ensure that the display device 112 maintains a consistent image and does not flicker during this transition to the hybrid graphics mode. In step 508, the graphics driver 118 configures itself to trap and hold any received graphics calls that involve updating the display, such as “present” calls, until the transition to the hybrid graphics mode is complete. Advantageously, when the application programs 116 disconnect from the IGPU 128 in step 408 of method 400, the IGPU DAC 136 will continue to display the screen shot taken in step 502.
In step 510, the graphics driver 118 waits for the operating system 112 to ask the graphics driver 118 if the DGPU 124 is connected to a display device. As shown in the computing system 100 of FIG. 2, the DGPU 124 is not directly attached to a display device. If the graphics driver 118 were not transitioning into the hybrid graphics mode, then the graphics driver 118 would determine that the DGPU 124 was not connected to a display device and would relay this response to the operating system 112. However, since the graphics driver 118 is transitioning into the hybrid graphics mode, the graphics driver 118 is configured to inform the operating system 112 that the DGPU 124 is connected to a display device—display device 112. Informing the operating system 112 that the DGPU 124 is connected to the display device 112 in this manner allows the operating system 112 to successfully execute the method 400, thereby changing the primary display to the DGPU 124.
In step 512, the graphics driver 118 waits for the operating system 112 to ask the graphics driver 118 to enable the DGPU 124. After the graphics driver 118 enables the DGPU 124, then the method proceeds to step 514. In step 514, the graphics driver 118 waits for the operating system 112 to ask the graphics driver 118 to disable the IGPU 124. As detailed above in conjunction with FIG. 2, while in hybrid graphics mode, the graphics driver 118 uses the IGPU DAC 136 to display the graphics images rendered by the DGPU 124. Therefore, in step 514, the graphics driver 118 does not disable the entire IGPU 124. Instead, the graphics driver 118 disables most of the IGPU 124, but keeps the IGPU DAC 136 alive. This technique permits the DGPU 124 to use the IGPU DAC 136 and the display device 112 without being directly connected to the display device 112. The graphics driver 118 then begins operating in the hybrid graphics mode.
In step 516, the graphics driver 118 processes a graphics call from one of the application programs 116. At step 518, the graphics driver 118 determines if the graphics call is an update to the display device 112, such as a “present” call. If the graphics call is not an update to the display device 112, then the graphics driver 118 proceeds to step 524. In step 524, the graphics driver 118 inserts a command into the push buffer to configure the DGPU 124 to execute the graphics call. However, if the graphics call is an update to the display device 112, then the graphics driver 118 intercepts the graphics call and executes steps 520 and 522.
In steps 520 and 522, the graphics driver 118 manipulates the push buffer to ensure that the graphics images currently rendered on the DGPU 124 are used to drive the display device 112. More specifically, in step 520, the graphics driver 118 inserts a peer-to-peer DMA blit command into the push buffer. This command configures the DGPU 124 to copy the graphics images that are rendered on the DGPU from the DGPU local memory 122 to one of the two DGPU display buffers 204 and 206 within the IGPU local memory 126. Since, at any point, one of the DGPU display buffers 204 or 206 is being used to drive the display device 112, the graphics driver 118 selects the other DGPU display buffer 204 or 206 as the recipient of this blit operation. In step 522, the graphics driver 118 inserts a buffer-flip call into the push buffer. The buffer-flip call configures the IGPU DAC 136 to point to the DGPU display buffer 204 or 206, as the case may be, that was the recipient of the rendered graphics image in step 520. Thereinafter, the IGPU DAC 136 displays the graphics images rendered by the DGPU 124 on the display device 112.
After completing either step 522 or 524, the method 500 returns to step 516 where the graphics driver 118 processes the next graphics call. The method 500 continues to execute steps 516 through 524, processing graphics calls from the application programs 116, until the graphics driver 118 receives a request to transition out of the hybrid graphics mode, back to the integrated graphics mode.
FIG. 6 is a flow diagram of method steps for transitioning from the hybrid graphics mode to the integrated graphics mode, according to one embodiment of the invention. Although the method steps are described in conjunction with the systems for FIGS. 1-2, persons skilled in the art will understand that any system that performs the method steps, in any order, is within the scope of the invention.
The method 600 begins at step 602, where the service daemon 120 determines that the last of the application programs 116 that are to be run using the DGPU 124 has terminated. In step 604, the service daemon 120 tells the graphics driver 118 to prepare to switch from the hybrid graphics mode to the integrated graphics mode. In step 606, the graphics driver 118 uses the push buffer to configure the DGPU 124 to place a screen shot of the current display device 112 in the IGPU display buffer 204. In step 608, the graphics driver 118 uses the push buffer to configure the IGPU DAC 136 to display the contents of the IGPU display buffer 204. In step 610, the graphics driver 118 configures itself to trap and hold any received graphics calls that involve updating the display, such as “present” calls, until the transition to the integrated graphics mode is complete. The steps 606 through 610 ensure that the display device 112 continues to display the current screen shot until the computing system 100 begins operating in the integrated graphics mode.
In step 612, the service daemon 120 asks the operating system 114 to change the GPU that renders the graphics images for the computing system 100 from the DGPU 124 to the IGPU 128. This step is described above in conjunction with FIG. 4. As part of step 612, the application programs 116 that are currently running on the operating system 114 disconnect from the DGPU 124 and reconnect to the IGPU 128. Thus, subsequent graphics calls received from the application programs 116 are automatically subject to the limitations of the IGPU 128. In step 614, the service daemon 120 waits for the operating system 112 to acknowledge the GPU change. In step 616, the graphics driver 118 processes any held “present” calls and resumes processing all graphics calls, rendering and displaying using the IGPU 128. In step 618, the service daemon 120 powers down the discrete graphics processing subsystem 108, and the method 600 terminates. Powering-down the discrete graphics processing subsystem 108 may lead to considerable power savings as the computing system 100 continues to operate, which, among other things, can lead to prolonged battery life if the computing system 100 is a laptop running on battery power.
In sum, the graphics performance and the power consumption of a computing device may be tuned by dynamically switching between GPUs. In one embodiment, the computing system includes a single graphics driver, an IGPU, a DGPU, and a single display device connected to the IGPU DAC. When a graphically-intensive application program starts, the server daemon may configure the graphics driver to operate in a hybrid graphics mode to maximize the graphics performance of the computing system. In this mode, the graphics driver renders graphic images using the DGPU, transmits the rendered graphics images from the DGPU local memory to the IGPU local memory using a peer-to-peer DMA blit, and displays the rendered graphics images on the display device using the IGPU DAC. When less demanding applications programs are running, the server daemon may configure the graphics driver to operate in an integrated graphics mode, powering-down the DGPU to minimize the power consumption of the computing device. In this mode, the graphics driver renders and display graphics images using the IGPU.
While transitioning between GPUs, the graphics driver configures the IGPU DAC to display a screen shot of the last display image rendered by the current GPU so that the display device does not glitch. Furthermore, the graphics driver modifies the inherent GPU switching behavior of the operating system to disconnect running application programs from the current GPU and subsequently reconnect these application programs to the new GPU. Advantageously, this technique allows the application programs to operate using the new GPU without terminating the application programs or rebooting the computing system. And, since the display device may be driven by either GPU, switching between the GPUs may be accomplished without changing the connection to the display device.
While the foregoing is directed to embodiments of the present invention, other and further embodiments of the invention may be devised without departing from the basic scope thereof. For example, the discrete graphics processing subsystem may include multiple GPUs linked together to render graphics images in parallel. Also, aspects of the present invention may be implemented in hardware or software or in a combination of hardware and software. One embodiment of the invention may be implemented as a program product for use with a computer system. The program(s) of the program product define functions of the embodiments (including the methods described herein) and can be contained on a variety of computer-readable storage media. Illustrative computer-readable storage media include, but are not limited to: (i) non-writable storage media (e.g., read-only memory devices within a computer such as CD-ROM disks readable by a CD-ROM drive, flash memory, ROM chips or any type of solid-state non-volatile semiconductor memory) on which information is permanently stored; and (ii) writable storage media (e.g., floppy disks within a diskette drive or hard-disk drive or any type of solid-state random-access semiconductor memory) on which alterable information is stored. Such computer-readable storage media, when carrying computer-readable instructions that direct the functions of the present invention, are embodiments of the present invention. Therefore, the scope of the present invention is determined by the claims that follow.

Claims (21)

1. A method for managing a switch from an integrated graphics processing unit (IGPU) to a discrete graphics processing unit (DGPU) for rendering operations, the method comprising:
receiving a notification from an operating system that an application wants to begin execution;
determining that the application should be executed using the DGPU instead of the IGPU, wherein the IGPU includes a first memory that includes a first buffer, a second buffer and a third buffer, the first and second buffers each corresponding to the DGPU, and the third buffer corresponding to the IGPU;
powering on a discrete graphics processing subsystem that includes the DGPU, wherein the DGPU includes a second memory; and
instructing a graphics driver to switch to a hybrid processing mode that uses the DGPU for rendering operations, wherein the DGPU is configured, when switching to the hybrid processing mode, to store rendered data in the first or second buffer.
2. The method of claim 1, wherein switching to a hybrid processing mode comprises the graphics driver, when queried by the operating system, indicating that the DGPU is coupled to a display device, and, when asked by the operating system to disable the IGPU, disabling portions of the IGPU, but not an IGPU digital-to-analog converter coupled to the display device.
3. The method of claim 1, further comprising the step of instructing the operating system to switch from the IGPU to the DGPU.
4. The method of claim 3, wherein the operating system switching from the IGPU to the DGPU comprises the operating system asking the graphics driver whether the DGPU is coupled to a display device, receiving an indication from the graphics driver that the DGPU is coupled to the display device, telling one or more applications that the display device has been lost, requesting the graphics driver to disable the IGPU, requesting the graphics driver to enable the DGPU, and telling the one or more applications to reconnect to the display device.
5. The method of claim 3, further comprising the step of receiving an acknowledgement from the operating system that the switch from the IGPU to the DGPU has been completed.
6. The method of claim 5, further comprising the step of instructing the application to begin execution.
7. The method of claim 6, further comprising the step of monitoring all applications executing on the DGPU to determine when the DGPU is no longer needed.
8. The method of claim 1, further comprising the step of instructing the operating system to transmit a notification when the application wants to begin execution.
9. A non-transitory computer-readable medium including instructions that, when executed by a processing unit, cause the processing unit to manage a switch from an integrated graphics processing unit (IGPU) to a discrete graphics processing unit (DGPU) for rendering operations, by performing the steps of:
receiving a notification from an operating system that an application wants to begin execution;
determining that the application should be executed using the DGPU instead of the IGPU, wherein the IGPU includes a first memory that includes a first buffer, a second buffer and a third buffer, the first and second buffers each corresponding to the DGPU, and the third buffer corresponding to the IGPU;
powering on a discrete graphics processing subsystem that includes the DGPU, wherein the DGPU includes a second memory; and
instructing a graphics driver to switch to a hybrid processing mode that uses the DGPU for rendering operations, wherein the DGPU is configured, when switching to the hybrid processing mode, to store rendered data in the first or second buffer.
10. The non-transitory computer-readable medium of claim 9, further comprising the step of instructing the operating system to switch from the IGPU to the DGPU.
11. The non-transitory computer-readable medium of claim 10, further comprising the step of receiving an acknowledgement from the operating system that the switch from the IGPU to the DGPU has been completed.
12. The non-transitory computer-readable medium of claim 11, further comprising the step of instructing the application to begin execution.
13. The non-transitory computer-readable medium of claim 12, further comprising the step of monitoring all applications executing on the DGPU to determine when the DGPU is no longer needed.
14. The non-transitory computer-readable medium of claim 9, further comprising the step of instructing the operating system to transmit a notification when the application wants to begin execution.
15. A computing device, comprising:
an integrated graphics processing unit (IGPU);
a discrete graphics processing unit (DGPU); and
a service daemon configured to manage a switch from the IGPU to the DGPU for rendering operations by performing the steps of:
receiving a notification from an operating system that an application wants to begin execution,
determining that the application should be executed using the DGPU instead of the IGPU, wherein the IGPU includes a first memory that includes a first buffer, a second buffer and a third buffer, the first and second buffers each corresponding to the DGPU, and the third buffer corresponding to the IGPU,
powering on a discrete graphics processing subsystem that includes the DGPU, wherein the DGPU includes a second memory, and
instructing a graphics driver to switch to a hybrid processing mode that uses the DGPU for rendering operations, wherein the DGPU is configured, when switching to the hybrid processing mode, to store rendered data in the first or second buffer.
16. The computing device of claim 15, wherein the service daemon is further configured to instruct the operating system to switch from the IGPU to the DGPU.
17. The computing device of claim 16, wherein the service daemon is further configured to receive an acknowledgement from the operating system that the switch from the IGPU to the DGPU has been completed.
18. The computing device of claim 17, wherein the service daemon is further configured to instruct the application to begin execution.
19. The computing device of claim 18, wherein the service daemon is further configured to monitor all applications executing on the DGPU to determine when the DGPU is no longer needed.
20. The computing device of claim 15, wherein the service daemon is further configured to instruct the operating system to transmit a notification when the application wants to begin execution.
21. A method for managing a switch from an integrated graphics processing unit (IGPU) to a discrete graphics processing unit (DGPU) for rendering operations, the method comprising:
powering on an integrated graphics processing subsystem that includes the IGPU, wherein the IGPU includes a first memory that includes an IGPU display buffer, a first buffer and a second buffer, and the first and second buffers each associating with the DGPU;
configuring an IGPU digital-to-analog converter to drive a display device to display graphics images stored in the IGPU display buffer;
powering on a discrete graphics processing subsystem that includes the DGPU, wherein the DGPU includes a second memory;
instructing a graphics driver to switch from an integrated graphics mode to a hybrid processing mode that uses the DGPU for rendering operations, wherein the DGPU is configured, when switching to the hybrid processing mode, to store rendered graphics images presented on the display device in the first or second buffer; and
configuring the IGPU digital-to-analog converter to drive the display device to display the rendered graphics images stored in the first or second buffer such that the display device continually displays the same image during the switch.
US11/937,468 2007-11-08 2007-11-08 System and method for switching between graphical processing units Active 2030-08-17 US8233000B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US11/937,468 US8233000B1 (en) 2007-11-08 2007-11-08 System and method for switching between graphical processing units

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/937,468 US8233000B1 (en) 2007-11-08 2007-11-08 System and method for switching between graphical processing units

Publications (1)

Publication Number Publication Date
US8233000B1 true US8233000B1 (en) 2012-07-31

Family

ID=46547617

Family Applications (1)

Application Number Title Priority Date Filing Date
US11/937,468 Active 2030-08-17 US8233000B1 (en) 2007-11-08 2007-11-08 System and method for switching between graphical processing units

Country Status (1)

Country Link
US (1) US8233000B1 (en)

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110060924A1 (en) * 2009-09-08 2011-03-10 Ati Technologies, Ulc. Power Management in Multi-GPU Systems
US20110063308A1 (en) * 2007-12-13 2011-03-17 Ati Technologies Ulc Display system with frame reuse using divided multi-connector element differential bus connector
US20110164045A1 (en) * 2010-01-06 2011-07-07 Apple Inc. Facilitating efficient switching between graphics-processing units
US20110164051A1 (en) * 2010-01-06 2011-07-07 Apple Inc. Color correction to facilitate switching between graphics-processing units
US20120092351A1 (en) * 2010-10-19 2012-04-19 Apple Inc. Facilitating atomic switching of graphics-processing units
US20130093777A1 (en) * 2009-12-23 2013-04-18 Zhiqiang He Computer, monitor and computer display method
US20130163195A1 (en) * 2011-12-22 2013-06-27 Nvidia Corporation System, method, and computer program product for performing operations on data utilizing a computation module
US8564599B2 (en) 2010-01-06 2013-10-22 Apple Inc. Policy-based switching between graphics-processing units
US8687007B2 (en) 2008-10-13 2014-04-01 Apple Inc. Seamless display migration
US20140247270A1 (en) * 2010-06-07 2014-09-04 Apple Inc. Switching Video Streams for a Display Without a Visible Interruption
TWI499903B (en) * 2012-11-05 2015-09-11 Inventec Corp Electronic apparatus and power controlling method
WO2016025393A1 (en) * 2014-08-15 2016-02-18 Google Technology Holdings LLC Displaying always on display-related content
US9625987B1 (en) * 2015-04-17 2017-04-18 Google Inc. Updating and displaying information in different power modes
US20200073467A1 (en) * 2018-08-30 2020-03-05 International Business Machines Corporation Power management using historical workload information
WO2021034496A1 (en) * 2019-08-20 2021-02-25 Intel Corporation Apparatus and method to improve switchable graphics system performance and energy consumption based applications and real-time system power/thermal budgets
US20210319140A1 (en) * 2020-04-08 2021-10-14 Samsung Electronics Co., Ltd. Method of processing secure data and electronic device supporting the same
US20220300050A1 (en) * 2021-03-22 2022-09-22 Dell Products L.P. System and method of enhancing performances of information handling systems by utilizing graphics processing units

Citations (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5799204A (en) * 1995-05-01 1998-08-25 Intergraph Corporation System utilizing BIOS-compatible high performance video controller being default controller at boot-up and capable of switching to another graphics controller after boot-up
US6460125B2 (en) * 1998-08-07 2002-10-01 Ati Technologies, Inc. Dynamic memory clock control system and method
US6473086B1 (en) * 1999-12-09 2002-10-29 Ati International Srl Method and apparatus for graphics processing using parallel graphics processors
US6624816B1 (en) * 1999-09-10 2003-09-23 Intel Corporation Method and apparatus for scalable image processing
US6820209B1 (en) * 1999-07-15 2004-11-16 Apple Computer, Inc. Power managed graphics controller
US6864891B2 (en) * 2002-01-31 2005-03-08 Hewlett-Packard Development Company L.P. Switching between internal and external display adapters in a portable computer system
US6950105B2 (en) * 2002-06-03 2005-09-27 Ati Technologies Inc. Power consumption management in a video graphics accelerator
US20050244131A1 (en) * 2004-04-28 2005-11-03 Kabushiki Kaisha Toshiba Electronic apparatus and display control method
US6970173B2 (en) * 2001-09-14 2005-11-29 Ati Technologies, Inc. System for providing multiple display support and method thereof
US20050278559A1 (en) * 2004-06-10 2005-12-15 Marvell World Trade Ltd. Low power computer with main and auxiliary processors
US20050285863A1 (en) * 2004-06-25 2005-12-29 Diamond Michael B Discrete graphics system unit for housing a GPU
US6985152B2 (en) * 2004-04-23 2006-01-10 Nvidia Corporation Point-to-point bus bridging without a bridge controller
US7019752B1 (en) * 2003-06-04 2006-03-28 Apple Computer, Inc. Method and apparatus for frame buffer management
US20070239913A1 (en) * 2006-03-28 2007-10-11 Knepper Lawrence E System and method for information handling system hot insertion of external graphics
US20080028408A1 (en) * 2006-07-25 2008-01-31 Day Michael N Logical partitioning and virtualization in a heterogeneous architecture
US20080204460A1 (en) * 2006-05-30 2008-08-28 Ati Technologies Ulc Device having multiple graphics subsystems and reduced power consumption mode, software and methods
US20080307365A1 (en) * 2007-06-08 2008-12-11 Apple Inc. Object transitions
US7492369B2 (en) * 2004-04-09 2009-02-17 Marvell International Ltd. Loading an internal frame buffer from an external frame buffer
US20090079746A1 (en) * 2007-09-20 2009-03-26 Apple Inc. Switching between graphics sources to facilitate power management and/or security
US7663635B2 (en) * 2005-05-27 2010-02-16 Ati Technologies, Inc. Multiple video processor unit (VPU) memory mapping
US7698579B2 (en) * 2006-08-03 2010-04-13 Apple Inc. Multiplexed graphics architecture for graphics power management
US7721118B1 (en) * 2004-09-27 2010-05-18 Nvidia Corporation Optimizing power and performance for multi-processor graphics processing
US7730336B2 (en) * 2006-05-30 2010-06-01 Ati Technologies Ulc Device having multiple graphics subsystems and reduced power consumption mode, software and methods
US20100138675A1 (en) * 2008-11-30 2010-06-03 Dell Products L.P. Methods and Systems for Managing Power to Multiple Processors
US7734943B2 (en) * 2003-04-03 2010-06-08 Intel Corporation Low power display refresh
US7817155B2 (en) * 2005-05-24 2010-10-19 Ati Technologies Inc. Master/slave graphics adapter arrangement
US7861013B2 (en) * 2007-12-13 2010-12-28 Ati Technologies Ulc Display system with frame reuse using divided multi-connector element differential bus connector

Patent Citations (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5799204A (en) * 1995-05-01 1998-08-25 Intergraph Corporation System utilizing BIOS-compatible high performance video controller being default controller at boot-up and capable of switching to another graphics controller after boot-up
US6460125B2 (en) * 1998-08-07 2002-10-01 Ati Technologies, Inc. Dynamic memory clock control system and method
US6820209B1 (en) * 1999-07-15 2004-11-16 Apple Computer, Inc. Power managed graphics controller
US6624816B1 (en) * 1999-09-10 2003-09-23 Intel Corporation Method and apparatus for scalable image processing
US6473086B1 (en) * 1999-12-09 2002-10-29 Ati International Srl Method and apparatus for graphics processing using parallel graphics processors
US6970173B2 (en) * 2001-09-14 2005-11-29 Ati Technologies, Inc. System for providing multiple display support and method thereof
US6864891B2 (en) * 2002-01-31 2005-03-08 Hewlett-Packard Development Company L.P. Switching between internal and external display adapters in a portable computer system
US6950105B2 (en) * 2002-06-03 2005-09-27 Ati Technologies Inc. Power consumption management in a video graphics accelerator
US7734943B2 (en) * 2003-04-03 2010-06-08 Intel Corporation Low power display refresh
US7330922B2 (en) * 2003-06-04 2008-02-12 Apple Inc. Method and apparatus for frame buffer management
US7019752B1 (en) * 2003-06-04 2006-03-28 Apple Computer, Inc. Method and apparatus for frame buffer management
US7917678B2 (en) * 2003-06-04 2011-03-29 Apple Inc. Method and apparatus for frame buffer management
US7657686B2 (en) * 2003-06-04 2010-02-02 Apple Inc. Method and apparatus for frame buffer management
US7492369B2 (en) * 2004-04-09 2009-02-17 Marvell International Ltd. Loading an internal frame buffer from an external frame buffer
US7755633B2 (en) * 2004-04-09 2010-07-13 Marvell International Ltd. Loading an internal frame buffer from an external frame buffer
US6985152B2 (en) * 2004-04-23 2006-01-10 Nvidia Corporation Point-to-point bus bridging without a bridge controller
US20050244131A1 (en) * 2004-04-28 2005-11-03 Kabushiki Kaisha Toshiba Electronic apparatus and display control method
US20050278559A1 (en) * 2004-06-10 2005-12-15 Marvell World Trade Ltd. Low power computer with main and auxiliary processors
US20050285863A1 (en) * 2004-06-25 2005-12-29 Diamond Michael B Discrete graphics system unit for housing a GPU
US7721118B1 (en) * 2004-09-27 2010-05-18 Nvidia Corporation Optimizing power and performance for multi-processor graphics processing
US7817155B2 (en) * 2005-05-24 2010-10-19 Ati Technologies Inc. Master/slave graphics adapter arrangement
US7663635B2 (en) * 2005-05-27 2010-02-16 Ati Technologies, Inc. Multiple video processor unit (VPU) memory mapping
US20070239913A1 (en) * 2006-03-28 2007-10-11 Knepper Lawrence E System and method for information handling system hot insertion of external graphics
US20080204460A1 (en) * 2006-05-30 2008-08-28 Ati Technologies Ulc Device having multiple graphics subsystems and reduced power consumption mode, software and methods
US7730336B2 (en) * 2006-05-30 2010-06-01 Ati Technologies Ulc Device having multiple graphics subsystems and reduced power consumption mode, software and methods
US20080028408A1 (en) * 2006-07-25 2008-01-31 Day Michael N Logical partitioning and virtualization in a heterogeneous architecture
US7698579B2 (en) * 2006-08-03 2010-04-13 Apple Inc. Multiplexed graphics architecture for graphics power management
US20080307365A1 (en) * 2007-06-08 2008-12-11 Apple Inc. Object transitions
US20090079746A1 (en) * 2007-09-20 2009-03-26 Apple Inc. Switching between graphics sources to facilitate power management and/or security
US7861013B2 (en) * 2007-12-13 2010-12-28 Ati Technologies Ulc Display system with frame reuse using divided multi-connector element differential bus connector
US20110063308A1 (en) * 2007-12-13 2011-03-17 Ati Technologies Ulc Display system with frame reuse using divided multi-connector element differential bus connector
US20100138675A1 (en) * 2008-11-30 2010-06-03 Dell Products L.P. Methods and Systems for Managing Power to Multiple Processors

Cited By (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014029532A (en) * 2007-12-13 2014-02-13 Ati Technologies Ulc Display system having frame reuse using division multi-connector element differential bus connector
US20110063308A1 (en) * 2007-12-13 2011-03-17 Ati Technologies Ulc Display system with frame reuse using divided multi-connector element differential bus connector
US8687007B2 (en) 2008-10-13 2014-04-01 Apple Inc. Seamless display migration
US8839012B2 (en) * 2009-09-08 2014-09-16 Advanced Micro Devices, Inc. Power management in multi-GPU systems
US20110060924A1 (en) * 2009-09-08 2011-03-10 Ati Technologies, Ulc. Power Management in Multi-GPU Systems
US8907960B2 (en) * 2009-12-23 2014-12-09 Beijing Lenovo Software Ltd. Computer, monitor and computer display method
US20130093777A1 (en) * 2009-12-23 2013-04-18 Zhiqiang He Computer, monitor and computer display method
US20110164051A1 (en) * 2010-01-06 2011-07-07 Apple Inc. Color correction to facilitate switching between graphics-processing units
US8648868B2 (en) 2010-01-06 2014-02-11 Apple Inc. Color correction to facilitate switching between graphics-processing units
US8564599B2 (en) 2010-01-06 2013-10-22 Apple Inc. Policy-based switching between graphics-processing units
US9336560B2 (en) 2010-01-06 2016-05-10 Apple Inc. Facilitating efficient switching between graphics-processing units
US8797334B2 (en) * 2010-01-06 2014-08-05 Apple Inc. Facilitating efficient switching between graphics-processing units
US9396699B2 (en) 2010-01-06 2016-07-19 Apple Inc. Color correction to facilitate switching between graphics-processing units
US20110164045A1 (en) * 2010-01-06 2011-07-07 Apple Inc. Facilitating efficient switching between graphics-processing units
US20140247270A1 (en) * 2010-06-07 2014-09-04 Apple Inc. Switching Video Streams for a Display Without a Visible Interruption
US10019971B2 (en) * 2010-06-07 2018-07-10 Apple Inc. Switching video streams for a display without a visible interruption
US20120092351A1 (en) * 2010-10-19 2012-04-19 Apple Inc. Facilitating atomic switching of graphics-processing units
US20130163195A1 (en) * 2011-12-22 2013-06-27 Nvidia Corporation System, method, and computer program product for performing operations on data utilizing a computation module
TWI499903B (en) * 2012-11-05 2015-09-11 Inventec Corp Electronic apparatus and power controlling method
WO2016025393A1 (en) * 2014-08-15 2016-02-18 Google Technology Holdings LLC Displaying always on display-related content
US9640100B2 (en) 2014-08-15 2017-05-02 Google Technology Holdings LLC Displaying always on display-related content
CN106662905A (en) * 2014-08-15 2017-05-10 谷歌技术控股有限责任公司 Displaying always on display-related content
US10127849B2 (en) 2014-08-15 2018-11-13 Google Technology Holdings LLC Displaying always on display-related content
DE112015003769B4 (en) 2014-08-15 2023-03-09 Google Technology Holdings LLC VIEWING ALWAYS-ON AD-RELATED CONTENT
CN106662905B (en) * 2014-08-15 2020-03-13 谷歌技术控股有限责任公司 Displaying content related to always-on display
US9625987B1 (en) * 2015-04-17 2017-04-18 Google Inc. Updating and displaying information in different power modes
US10884482B2 (en) * 2018-08-30 2021-01-05 International Business Machines Corporation Prioritizing power delivery to processing units using historical workload information
US20200073467A1 (en) * 2018-08-30 2020-03-05 International Business Machines Corporation Power management using historical workload information
WO2021034496A1 (en) * 2019-08-20 2021-02-25 Intel Corporation Apparatus and method to improve switchable graphics system performance and energy consumption based applications and real-time system power/thermal budgets
EP4018286A4 (en) * 2019-08-20 2023-09-27 Intel Corporation Apparatus and method to improve switchable graphics system performance and energy consumption based applications and real-time system power/thermal budgets
US20210319140A1 (en) * 2020-04-08 2021-10-14 Samsung Electronics Co., Ltd. Method of processing secure data and electronic device supporting the same
US11550963B2 (en) * 2020-04-08 2023-01-10 Samsung Electronics Co., Ltd. Method of processing secure data and electronic device supporting the same
US20220300050A1 (en) * 2021-03-22 2022-09-22 Dell Products L.P. System and method of enhancing performances of information handling systems by utilizing graphics processing units
US11829216B2 (en) * 2021-03-22 2023-11-28 Dell Products L.P. System and method of enhancing performances of information handling systems by utilizing graphics processing units

Similar Documents

Publication Publication Date Title
US8233000B1 (en) System and method for switching between graphical processing units
US8259119B1 (en) System and method for switching between graphical processing units
EP2423913B1 (en) Device having multiple graphics subsystems and reduced power consuption mode, software and methods
US8555099B2 (en) Device having multiple graphics subsystems and reduced power consumption mode, software and methods
US8199155B2 (en) System, method, and computer program product for saving power in a multi-graphics processor environment
EP2476037B1 (en) Managing resources to facilitate altering the number of active processors
TWI552136B (en) Techniques to control of self refresh display functionality
US8839012B2 (en) Power management in multi-GPU systems
US7698579B2 (en) Multiplexed graphics architecture for graphics power management
US9256265B2 (en) Method and system for artificially and dynamically limiting the framerate of a graphics processing unit
US9865233B2 (en) Hybrid graphics display power management
US8893158B2 (en) Information processing apparatus that switches between processing units running operating systems to be associated with a user interface and method for controlling information processing apparatus
US20110113166A1 (en) Method and Apparatus of USB 3.0 Based Computer, Console and Peripheral Sharing
JP2007508583A (en) Switching display update characteristics by detecting power management events
JP2010277592A (en) Hybrid computer system
CN110413098B (en) Control method and device
KR20230164087A (en) Graphics processing unit (GPU) selection based on utilized power
CN103853305A (en) Power management method and electronic device
JP2000039983A (en) Computer system and display device switching control method
WO2015145709A1 (en) Computer and method for controlling computer

Legal Events

Date Code Title Description
AS Assignment

Owner name: NVIDIA CORPORATION, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:DIARD, FRANCK R.;REEL/FRAME:020097/0166

Effective date: 20071107

STCF Information on status: patent grant

Free format text: PATENTED CASE

FPAY Fee payment

Year of fee payment: 4

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 8

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 12TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1553); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 12