Asnchronous notifications for concurrent graphics operations
AssigneeApple Inc.
InventorsMichael James Elliott Swift, Kenneth Christian Dyke, Richard Schreyer
Life of this patent
Estimating the term…
Abstract
A method and an apparatus for notifying a display driver to update a display with a graphics frame including multiple graphics data rendered separately by multiple graphics processing units (GPUs) substantially concurrently are described. Graphics commands may be received to dispatch to each GPU for rendering corresponding graphics data. The display driver may be notified when each graphics data has been completely rendered respectively by the corresponding GPU.
Claims40
A computer implemented method for processing graphics data, the method comprising:
- receiving a first graphics command for rendering first graphics data and a second graphics command for rendering second graphics data, the first and second graphics data representing at least a portion of a graphics frame;
- in response to the first and second graphics commands, rendering the first graphics data via a first graphics processing unit (GPU) and rendering the second graphics data via a second GPU substantially concurrently;
- and
- notifying a display driver to update a display with the graphics frame when the first GPU and the second GPU have completed rendering the first and second graphics data respectively.
A machine-readable medium having instructions stored therein which, when executed on a system, cause the system to perform a method for processing graphics data, the method comprising:
- receiving a first graphics command for rendering first graphics data and a second graphics command for rendering second graphics data, the first and second graphics data representing at least a portion of a graphics frame;
- in response to the first and second graphics commands, rendering the first graphics data via a first graphics processing unit (GPU) and rendering the second graphics data via a second GPU substantially concurrently;
- and
- notifying a display driver to update a display with the graphics frame when the first GPU and the second GPU have completed rendering the first and second graphics data respectively.
A data processing system, comprising:
- a display;
- a first graphics processing unit (GPU), in response to a first graphics command, to process first graphics data of a graphics frame;
- a second GPU, in response to a second graphics command, to process second graphics data of the graphics frame substantially concurrently;
- and
- a display driver coupled to the first and second GPUs to update the graphics frame based on the first and second graphics data when the first and second GPUs have completed processing the first and second graphics data.
An apparatus for processing graphics data, comprising:
- means for receiving a first graphics command for rendering first graphics data and a second graphics command for rendering second graphics data, the first and second graphics data representing at least a portion of a graphics frame;
- in response to the first and second graphics commands, means for rendering the first graphics data via a first graphics processing unit (GPU) and rendering the second graphics data via a second GPU substantially concurrently;
- and
- means for notifying a display driver to update a display with the graphics frame when the first GPU and the second GPU have completed rendering the first and second graphics data respectively.
A computer implemented method for processing graphics data, the method comprising:
- receiving a first synchronization message from a first graphics driver driving a first graphics processing unit (GPU), the first synchronization message indicating that the first GPU has completed processing first graphics data;
- receiving a second synchronization message from a second graphics driver driving a second GPU, the second synchronization message indicating that the second GPU has completed processing second graphics data, wherein the first and second graphics data are processed substantially concurrently and wherein the first and second graphics data represent at least a portion of a graphics frame;
- and
- in response to the first and second synchronization messages, updating a display with the graphics frame based on the first and second graphics data, wherein the graphics frame is not updated until all of the first and second synchronization messages are received.
A machine-readable medium having instructions stored therein which, when executed on a system, cause the system to perform a method for processing graphics data, the method comprising:
- receiving a first synchronization message from a first graphics driver driving a first graphics processing unit (GPU), the first synchronization message indicating that the first GPU has completed processing first graphics data;
- receiving a second synchronization message from a second graphics driver driving a second GPU, the second synchronization message indicating that the second GPU has completed processing second graphics data, wherein the first and second graphics data are processed substantially concurrently and wherein the first and second graphics data represent at least a portion of a graphics frame;
- and
- in response to the first and second synchronization messages, updating a display with the graphics frame based on the first and second graphics data, wherein the graphics frame is not updated until all of the first and second synchronization messages are received.
An apparatus for processing graphics data, comprising:
- means for receiving a first synchronization message from a first graphics driver driving a first graphics processing unit (GPU), the first synchronization message indicating that the first GPU has completed processing first graphics data;
- means for receiving a second synchronization message from a second graphics driver driving a second GPU, the second synchronization message indicating that the second GPU has completed processing second graphics data, wherein the first and second graphics data are processed substantially concurrently and wherein the first and second graphics data represent at least a portion of a graphics frame;
- and
- in response to the first and second synchronization messages, means for updating a display with the graphics frame based on the first and second graphics data, wherein the graphics frame is not updated until all of the first and second synchronization messages are received.
A computer implemented method for processing graphics data, the method comprising:
- receiving a swap command from a graphics API (application programming interface), the swap command being identified by a swap identifier (ID) identifying a graphics frame, wherein the swap command further identifies a plurality of graphics commands for rendering a plurality of segments of graphics data associated with the graphics frame, which are processed by a plurality of graphics processing units (GPUs) substantially concurrently;
- receiving a synchronization command from each of the GPUs indicating that the respective GPU has completed processing the respective segment of the graphics data;
- examining the synchronization command from each GPU to determine whether the synchronization command is the last one representing the last segment of the graphics data processed by the GPUs;
- updating a display with the graphics frame if the synchronization commands for all segments of the graphics data associated with the graphics frame have been received;
- and
- suspending updating the graphics frame if there are more synchronization commands to be received, until all of the synchronization commands are received.
A machine-readable medium having instructions stored therein which, when executed on a system, cause the system to perform a method for processing graphics data, the method comprising:
- receiving a swap command from a graphics API (application programming interface), the swap command being identified by a swap identifier (ID) identifying a graphics frame, wherein the swap command further identifies a plurality of graphics commands for rendering a plurality of segments of graphics data associated with the graphics frame, which are processed by a plurality of graphics processing units (GPUs) substantially concurrently;
- receiving a synchronization command from each of the GPUs indicating that the respective GPU has completed processing the respective segment of the graphics data;
- examining the synchronization command from each GPU to determine whether the synchronization command is the last one representing the last segment of the graphics data processed by the GPUs;
- updating a display with the graphics frame if the synchronization commands for all segments of the graphics data associated with the graphics frame have been received;
- and
- suspending updating the graphics frame if there are more synchronization commands to be received, until all of the synchronization commands are received.
An apparatus for processing graphics data, comprising:
- means for receiving a swap command from a graphics API (application programming interface), the swap command being identified by a swap identifier (ID) identifying a graphics frame, wherein the swap command further identifies a plurality of graphics commands for rendering a plurality of segments of graphics data associated with the graphics frame, which are processed by a plurality of graphics processing units (GPUs) substantially concurrently;
- means for receiving a synchronization command from each of the GPUs indicating that the respective GPU has completed processing the respective segment of the graphics data;
- means for examining the synchronization command from each GPU to determine whether the synchronization command is the last one representing the last segment of the graphics data processed by the GPUs;
- means for updating a display with the graphics frame if the synchronization commands for all segments of the graphics data associated with the graphics frame have been received;
- and
- means for suspending updating the graphics frame if there are more synchronization commands to be received, until all of the synchronization commands are received.
A data processing system, comprising:
- a display device;
- a plurality of graphics APIs (application programming interfaces) to receive a plurality of graphics commands for rendering a plurality of segments of graphics data representing a graphics frame;
- a plurality of graphics processing units (GPUs) coupled to the graphics APIs to receive the graphics command and render the segments of the graphics data substantially concurrently;
- and
- a display controller coupled to the GPUs to control the display device, wherein for each of the GPU, the display controller receives and examines a synchronization command indicating that the respective GPU has completed rendering a respective segment of the graphics data, in order to determine whether all of the GPUs have completed rendering all segments of the graphics data, and wherein the display controller is configured to update the display device with the graphics frame when all segments of the graphics data have been rendered based on the synchronization commands received from the GPUs.
Dependencies are inferred from the claim text.