IP Library Granted Patent US 8,847,970
Granted Patent B2
US 8,847,970 · App. 13/449,854 · Granted Sep 30, 2014

Updating graphical content based on dirty display buffers

Inventor: Etienne Belanger (Kanata, CA)
Assignee: 2236008 Ontario Inc.
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,847,970
App. No.
13/449,854
Granted
Sep 30, 2014
Kind
B2
Abstract

A system improves the performance of buffering frames. After a buffer flip occurs when double buffering the frames, the system may update some portions of dirty buffer regions in a back buffer with changes between a source frame and an intermediate frame. The system may update other portions of the dirty buffer regions with changes between the intermediate frame and a target frame. An application may write to an application buffer or a display buffer depending on whether the application controls a region of the display buffer that corresponds to the application buffer.

Claims (27)

1. A system for updating graphics buffers that buffer frames, the system comprising:

a memory comprising a front buffer and a back buffer, wherein the back buffer represents a source frame that is to be updated to a target frame, the front buffer represents an intermediate frame, and the intermediate frame is after the source frame and before the target frame in a sequence of frames; and

a processor in communication with the memory, the memory further comprising:

a first rendering module configured to cause the processor to update a non-intersecting portion of a first set of dirty regions of the intermediate frame in the back buffer with changes between the source frame and the intermediate frame that are applicable to the non-intersecting portion, wherein the non-intersecting portion of the first set of dirty regions of the intermediate frame is determined not to intersect a second set of dirty regions of the target frame, the changes between the source frame and the intermediate frame are contained within the first set of dirty regions, and changes between the intermediate frame and the target frame are contained within the second set of dirty regions, wherein the second set of dirty regions of the target frame includes an intersecting portion of the second set of dirty regions of the target frame that intersects the first set of dirty regions, and wherein the changes between the source frame and the intermediate frame are applied to the back buffer differently in the non- intersecting portion than in the intersecting portion; and

a second rendering module configured to cause the processor to update the second set of dirty regions of the target frame in the back buffer with the changes between the intermediate frame and the target frame.

2. The system of claim 1 , wherein the second rendering module is further configured to cause the processor to update the intersecting portion of the second set of dirty regions of the target frame in the back buffer through an application of at least a subset of the changes between the intermediate frame and the target frame but not the changes between the source frame and the intermediate frame, and wherein the intersecting portion of the second set of dirty regions of the target frame is determined to intersect the first set of dirty regions of the intermediate frame.

3. The system of claim 1 , wherein the first rendering module is further configured to cause the processor to copy the non-intersecting portion of the first set of dirty regions of the intermediate frame from the front buffer to the back buffer.

4. The system of claim 1 , wherein the first rendering module is further configured to cause the processor to modify a change list that identifies the changes between the source frame and the intermediate frame so that the change list excludes changes to the intersecting portion of the second set of dirty regions.

5. The system of claim 1 , wherein the first rendering module is further configured to cause the processor to either copy the non-intersecting portion from the front buffer to the back buffer or apply changes identified in a change list to the non-intersecting portion in the back buffer based on a characteristic of the non-intersecting portion.

6. The system of claim 5 , wherein the first rendering module is further configured to cause the processor to copy the non-intersecting portion if the non-intersecting portion is not rectangular and to apply changes identified in the change list to the non-intersecting portion if the non-intersecting portion is rectangular.

7. A non-transitory computer-readable storage medium encoded with computer executable instructions, the computer executable instructions executable with a processor, the computer-readable storage medium comprising:

instructions executable to determine a non-intersecting portion of a first set of dirty regions of an intermediate frame in a graphics buffer, wherein changes between a source frame and an intermediate frame are contained within the first set of dirty regions, and changes between the intermediate frame and a target frame are contained within a second set of dirty regions of the target frame, wherein the source frame is before the intermediate frame in a sequence of frames, and the intermediate frame is before the target frame in the sequence of frames, wherein the non-intersecting portion of the first set of dirty regions of the intermediate frame is determined not to intersect the second set of dirty regions of the target frame, wherein the second set of dirty regions includes an intersecting portion that intersects the first set of dirty regions;

instructions executable to update the non-intersecting portion the first set of dirty regions in the graphics buffer with the changes between the source frame and the intermediate frame that are applicable to the non-intersecting portion; and

instructions executable to update the second set of dirty regions of the target frame in the graphics buffer with the changes between the intermediate frame and the target frame.

8. The computer-readable storage medium of claim 7 further comprising instructions executable to determine whether a single application controls a region in a display buffer that corresponds to the target frame, and to include the graphics buffer in the display buffer instead of in an application buffer if the single application is determined to control the region in the display buffer that corresponds to the target frame and to include the graphics buffer in the application buffer if the single application is determined not to control the region in the display buffer that corresponds to the target frame.

9. The computer-readable storage medium of claim 7 , further comprising instructions executable to update a plurality of non-intersecting portions of a plurality of dirty regions of a plurality of intermediate frames in a graphics buffer with changes that are applicable to the non-intersecting portions of the dirty regions of the intermediate frames, wherein the non-intersecting portions of the dirty regions of the intermediate frames fail to intersect the second set of dirty regions of the target frame, and the intermediate frames are between the source frame and the target frame.

10. The computer-readable storage medium of claim 7 , further comprising instructions executable to adjust the first and the second sets of the dirty regions so that the changes between the intermediate frame and the target frame obscure the changes between the source frame and the intermediate frame in the intersecting portion of the second set of the dirty regions.

11. A computer-implemented method to update graphics buffers that buffer frames, the method comprising:

updating a non-intersecting portion of a first set of dirty regions of an intermediate frame in a graphics buffer with changes between a source frame and the intermediate frame that are applicable to the non-intersecting portion, wherein the non-intersecting portion of the first set of dirty regions of the intermediate frame is determined not to intersect a second set of dirty regions of a target frame, the target frame is after the intermediate frame in a sequence of frames, the intermediate frame is after the source frame in the sequence of frames, the changes between the source frame and the intermediate frame are contained within the first set of dirty regions, changes between the intermediate frame and the target frame are contained within the second set of dirty regions, wherein the second set of dirty regions of the target frame includes an intersecting portion of the second set of dirty regions that intersects the first set of dirty regions, wherein the non-intersecting portion of the first set of dirty regions in the graphics buffer is updated differently than the intersecting portion of the second set of dirty regions with respect to the changes between the source frame and the intermediate frame; and

updating the second set of dirty regions of the target frame in the graphics buffer with the changes between the intermediate frame and the target frame.

12. The method of claim 11 , wherein updating the second set of dirty regions of the target frame comprises updating the intersecting portion of the second set of dirty regions of the target frame in the graphics buffer based on a change list that identifies the changes between the intermediate frame and the target frame, wherein the intersecting portion of the second set of dirty regions of the target frame is determined to intersect the first set of dirty regions of the intermediate frame.

13. The method of claim 11 , wherein the graphics buffer is a first graphics buffer, and updating the non-intersecting portion of the first set of dirty regions of the intermediate frame comprises copying the non-intersecting portion from a second graphics buffer that represents the intermediate frame to the first graphics buffer.

14. The method of claim 11 , wherein updating the non-intersecting portion of the first set of dirty regions of the intermediate frame comprises applying changes identified in a change list to the non-intersecting portion of the first set of dirty regions of the intermediate frame in the graphics buffer, wherein the change list identifies changes between the source frame and the intermediate frame.

15. The method of claim 11 , wherein the graphics buffer is a first graphics buffer, and updating the non-intersecting portion of the first set of dirty regions of the intermediate frame comprises determining whether to copy the non-intersecting portion from a second graphics buffer or to apply changes identified in a change list to the non-intersecting portion in the first graphics buffer based on a characteristic of the non-intersecting portion.

16. The method of claim 15 , wherein determining whether to copy the non-intersecting portion comprises determining that the non-intersecting portion is to be copied from the second graphics buffer that represents the intermediate frame to the first graphics buffer if a size of the non-intersecting portion exceeds a threshold size, and that changes identified in the change list are to be applied to the non-intersecting portion in the first graphics buffer if the size of the non-intersecting portion does not exceed the threshold size.

17. The method of claim 11 , wherein the intersecting portion of the second set of dirty regions in the graphics buffer is not updated with the changes between the source frame and the intermediate frame.

18. The method of claim 11 further comprising updating the intersecting portion of the second set of dirty regions in the graphics buffer with the changes between the source frame and the intermediate frame that apply to the intersecting portion of the second set of dirty regions.

Assignments (10)
CORRECTIVE ASSIGNMENT TO CORRECT THE ADDED PATENT NUMBER TO REMOVE PATENT NO. 8,873,407 AT PREVIOUSLY RECORDED ON REEL 64066 FRAME 1. ASSIGNOR(S) HEREBY CONFIRMS THE NUNC PRO TUNC ASSIGNMENT EFFECTIVE DATE MARCH 20, 2023. Recorded Feb 2, 2026
From: BLACKBERRY LIMITED
To: MALIKIE INNOVATIONS LIMITED
Reel/Frame 074921/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT 12817157 APPLICATION NUMBER PREVIOUSLY RECORDED AT REEL: 064015 FRAME: 0001. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Sep 5, 2023
From: OT PATENT ESCROW, LLC
To: MALIKIE INNOVATIONS LIMITED
Reel/Frame 064807/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE COVER SHEET AT PAGE 50 TO REMOVE 12817157 PREVIOUSLY RECORDED ON REEL 063471 FRAME 0474. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Sep 5, 2023
From: BLACKBERRY LIMITED
To: OT PATENT ESCROW, LLC
Reel/Frame 064806/0669 →
NUNC PRO TUNC ASSIGNMENT Recorded Jun 19, 2023
From: BLACKBERRY LIMITED
To: MALIKIE INNOVATIONS LIMITED
Reel/Frame 064066/0001 →
NUNC PRO TUNC ASSIGNMENT Recorded Jun 16, 2023
From: OT PATENT ESCROW, LLC
To: MALIKIE INNOVATIONS LIMITED
Reel/Frame 064015/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 27, 2023
From: BLACKBERRY LIMITED
To: OT PATENT ESCROW, LLC
Reel/Frame 063471/0474 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 22, 2020
From: 2236008 ONTARIO INC.
To: BLACKBERRY LIMITED
Reel/Frame 053313/0315 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 4, 2014
From: QNX SOFTWARE SYSTEMS LIMITED
To: 8758271 CANADA INC.
Reel/Frame 032607/0943 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 4, 2014
From: 8758271 CANADA INC.
To: 2236008 ONTARIO INC.
Reel/Frame 032607/0674 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 23, 2012
From: BELANGER, ETIENNE
To: QNX SOFTWARE SYSTEMS LIMITED
Reel/Frame 028090/0948 →
Continuity (1)
Related Publication 20130278619A1 · Oct 24, 2013