Desktop compositor using copy-on-write semantics
First Claim
1. A system for managing tile data for a plurality of tiles of a display, comprising:
- a memory space configured to store tile data in a plurality of tile memory locations;
a plurality of buffers, each having a plurality of buffer tiles, wherein each buffer tile stores a reference associating the buffer tile with one of the tile memory locations and wherein corresponding buffer tiles in different ones of the plurality of buffers are associable with the same one or different ones of the tile memory locations; and
a memory interface circuit configured to receive a memory access command referencing a buffer tile of one of the plurality of buffers and to respond to the memory access command by accessing the tile memory location associated with the buffer tile, wherein the memory interface circuit uses the references stored in the buffer tiles to modify associations of the buffer tiles with the tile memory locations.
1 Assignment
0 Petitions
Accused Products
Abstract
Tile data for drawing and desktop buffers in a desktop compositor system is managed using “copy-on-write” semantics, in which tile data stored in a memory location is not transferred to another location until the tile data for one of the buffers is modified. For each tile in drawing buffers and desktop buffers, an association is maintained with a location in a tile memory, and the number of buffer tiles associated with each location is tracked. To copy a tile from one buffer to another, the tile association for the tile in the destination buffer is modified. New data for a tile of a buffer is written to the tile memory location associated with the buffer after ensuring that the tile memory location is not associated with any other tiles of any of the buffers. As a result, memory bandwidth can be considerably reduced.
152 Citations
33 Claims
-
1. A system for managing tile data for a plurality of tiles of a display, comprising:
-
a memory space configured to store tile data in a plurality of tile memory locations;
a plurality of buffers, each having a plurality of buffer tiles, wherein each buffer tile stores a reference associating the buffer tile with one of the tile memory locations and wherein corresponding buffer tiles in different ones of the plurality of buffers are associable with the same one or different ones of the tile memory locations; and
a memory interface circuit configured to receive a memory access command referencing a buffer tile of one of the plurality of buffers and to respond to the memory access command by accessing the tile memory location associated with the buffer tile, wherein the memory interface circuit uses the references stored in the buffer tiles to modify associations of the buffer tiles with the tile memory locations. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18)
-
-
19. A method for managing data for a plurality of tiles of a display, the method comprising:
-
providing a plurality of buffers, each including a plurality of buffer tiles, each buffer tile being associated with one of a plurality of tile memory locations in a tile memory space, wherein the tile memory space is accessed by referencing one of the buffer tiles;
for each of the tile memory locations, maintaining a reference count of the buffer tiles associated with the tile memory location;
copying a source buffer tile of a first one of the buffers to a destination buffer tile of a second one of the buffers by associating the destination buffer tile with a same tile memory location as the source buffer tile and updating the reference counts; and
writing new data for the destination buffer tile to the tile memory location associated with the destination buffer tile after updating the destination buffer tile such that the tile memory location associated with the destination buffer tile is not associated with any other buffer tile. - View Dependent Claims (20, 21, 22, 23, 24, 25, 26, 27)
-
-
28. A method for managing data for a plurality of tiles of a display, the method comprising:
-
providing a plurality of buffers, each including a plurality of buffer tiles, each buffer tile being associated with one of a plurality of tile memory locations in a tile memory space, wherein the tile memory space is accessed by referencing one of the buffer tiles, the plurality of buffers including a first drawing buffer, a second drawing buffer, a first desktop buffer, and a second desktop buffer;
for each tile memory location, maintaining a reference count of the buffer tiles associated with the tile memory location;
scanning out a first display image by reading tile data from tile memory locations associated with buffer tiles of the first desktop buffer;
in parallel with the act of scanning out a first display image;
generating desktop tile data for a tile of a second display image from source tile data stored in a tile memory location associated with a buffer tile of the first drawing buffer; and
storing the desktop tile data in a tile memory location associated with a buffer tile of the second desktop buffer; and
in response to completion of the act of scanning out a first display image, copying the second desktop buffer to the first desktop buffer by associating each buffer tile of the second desktop buffer with a same tile memory location as a corresponding buffer tile of the first desktop buffer and updating the reference counts. - View Dependent Claims (29, 30, 31, 32, 33)
-
Specification