Managing display data
10545868 ยท 2020-01-28
Assignee
Inventors
Cpc classification
G06F3/1415
PHYSICS
G09G5/003
PHYSICS
G09G2320/103
PHYSICS
G06F12/0802
PHYSICS
International classification
G09G5/36
PHYSICS
G09G5/00
PHYSICS
G06F3/14
PHYSICS
G06F12/0802
PHYSICS
Abstract
A method of managing display data involves maintaining caches (25, 29) of most recently used tiles of display data at a host (21) and at a display control device (22). The caches (25, 29) are synchronised so that they contain the same data in the same locations. When the host (21) generates a tile that needs encoding and transmitting, it checks to see if that tile is already stored in the host cache (25). If so, it sends a cache ID to the display control device (22); otherwise, it encodes and sends the tile. When the display control device (22) receives data, it identifies it either as a cache ID or as an encoded tile. If it is a cache ID, the data is retrieved from the display control device cache (29) and sent for display (23); otherwise, it decodes the tile and sends it for display (23). Both caches (25, 29) are updated so that the tile is indicated as the most recently accessed item in each cache (25, 29).
Claims
1. A method of managing display data at a host device, the host device being separate from a remote display control device and a remote display device, the remote display control device controlling the remote display device to display the display data, the method comprising, at the host device: receiving display data, generated at the host device, for a frame to be displayed on the remote display device controlled by the remote display control device, the frame of display data being divided into a plurality of tiles, where each tile is formed of display data for a plurality of pixels to be combined into the frame at the remote display control device for display on the remote display device; determining a tile identification of a tile, the tile identification including a location of the tile within the frame to be displayed; determining whether a representation of the display data of the tile matches, within a predetermined threshold, a representation of display data of one or more tiles stored in a host cache memory at the host device and replicated in a display control cache memory at the remote display control device; if the representation of the display data of the tile matches the representation of display data of a stored tile: determining a match identification of the matching stored tile in the host cache memory; associating the tile identification with the match identification; and transmitting the tile identification and the associated match identification for the tile to the remote display control device; or if the representation of the display data of the tile does not match the representation of display data of any of the stored tiles: transmitting the tile identification and the display data for the tile to the remote display control device; and determining whether to store the representation of the display data of the tile in the host cache memory based on a likelihood that the display data of the tile will be repeated in a subsequent frame of display data.
2. A method according to claim 1, further comprising, prior to transmitting the tile identification and the display data for the tile to the remote display control device: comparing the tile with a corresponding tile at a corresponding location in a previous frame to determine whether the tile is changed or unchanged compared to the corresponding tile; if the tile is unchanged, sending to the remote display control device the tile identification and instructions to use the display data of the corresponding tile; and if the tile is changed, transmitting the tile identification and the display data for the tile to the remote display control device.
3. The method according to claim 2, wherein the match identification includes a location of the stored tile within the host cache memory.
4. The method according to claim 2, further comprising synchronizing the host cache memory with the display control cache memory at the display control device.
5. The method according to claim 2, further comprising: if a determination is made to store the representation of the display data of the tile in the host cache memory based on a likelihood that the display data of the tile will be repeated in a subsequent frame of display data, storing the representation of the display data of the tile in the host cache memory.
6. The method according to claim 5, further comprising determining whether the representation of the display data is to be locally stored, and, if it is determined that the representation of the display data is to be locally stored, then storing the representation of the display data of the tile in the host cache memory.
7. The method according to claim 5, wherein storing the representation of the display data comprises determining a location for the storage of the representation of the display data of the tile within the host cache memory.
8. The method according to claim 7, further comprising transmitting the location for the storage of the representation of the display data of the tile to the remote display control device.
9. The method according to claim 2, wherein the representation of the display data comprises one or more of: the display data; a hash of the display data resulting from performing a hash function on the display data; a cyclic redundancy check (CRC) value resulting from a CRC operation performed on the display data; or any other compressed form of the display data that can uniquely identify the display data.
10. The method according to claim 2, wherein transmitting the display data to the remote display control device comprises encoding the display data and transmitting the encoded display data to the remote display control device.
11. A method according to claim 1, further comprising, prior to determining whether a representation of the display data of the tile matches, within a predetermined threshold, a representation of display data of one or more tiles stored in the host cache memory: comparing the tile with a corresponding tile at a corresponding location in a previous frame to determine whether the tile is changed or unchanged compared to the corresponding tile; if the tile is unchanged, sending to the remote display control device the tile identification and instructions to use the display data of the corresponding tile; wherein if at least one tile is changed, for each changed tile, proceeding with the step of: determining whether a representation of the display data of the tile matches, within a predetermined threshold, a representation of display data of one or more tiles stored in the host cache memory; and the subsequent steps.
12. The method according to claim 3, wherein the match identification includes a location of the stored tile within the host cache memory.
13. The method according to claim 11, further comprising synchronizing the host cache memory with the display control cache memory at the remote display control device.
14. The method according to claim 11, further comprising: if a determination is made to store the representation of the display data of the tile in the host cache memory based on a likelihood that the display data of the tile will be repeated in a subsequent frame of display data, storing the representation of the display data of the tile in the host cache memory.
15. The method according to claim 14, further comprising determining whether the representation of the display data is to be locally stored, and, if it is determined that the representation of the display data is to be locally stored, then storing the representation of the display data of the tile in the host cache memory.
16. The method according to claim 14, wherein storing the representation of the display data comprises determining a location for the storage of the representation of the display data of the tile within the host cache memory.
17. The method according to claim 16, further comprising transmitting the location for the storage of the representation of the display data of the tile to the remote display control device.
18. The method according to claim 11, wherein the representation of the display data comprises one or more of: the display data; a hash of the display data resulting from performing a hash function on the display data; a cyclic redundancy check (CRC) value resulting from a CRC operation performed on the display data; or any other compressed form of the display data that can uniquely identify the display data.
19. A method according to claim 11, wherein transmitting the display data to the remote display control device comprises encoding the display data and transmitting the encoded display data to the remote display control device.
20. The method according to claim 1, wherein the match identification includes a location of the stored tile within the host cache memory.
21. The method according to claim 1, further comprising synchronizing the host cache memory with the display control cache memory at the remote display control device.
22. The method according to claim 1, further comprising: if a determination is made to store the representation of the display data of the tile in the host cache memory based on a likelihood that the display data of the tile will be repeated in a subsequent frame of display data, storing the representation of the display data of the tile in the host cache memory.
23. The method according to claim 22, further comprising determining whether the representation of the display data is to be locally stored, and, if it is determined that the representation of the display data is to be locally stored, then storing the representation of the display data of the tile in the host cache memory.
24. The method according to claim 22, wherein storing the representation of the display data comprises determining a location for the storage of the representation of the display data of the tile within the host cache memory.
25. The method according to claim 24, further comprising transmitting the location for the storage of the representation of the display data of the tile to the remote display control device.
26. The method according to claim 1, wherein the representation of the display data comprises one or more of: the display data; a hash of the display data resulting from performing a hash function on the display data; a cyclic redundancy check (CRC) value resulting from a CRC operation performed on the display data; or any other compressed form of the display data that can uniquely identify the display data.
27. The method according to claim 1, wherein transmitting the display data to the remote display control device comprises encoding the display data and transmitting the encoded display data to the remote display control device.
28. A method of managing display data at a display control device, the display control device being separate from a remote host device, the display control device being connected to a display device for controlling the display device to display the display data, the method comprising, at the display control device: receiving from the remote host device, information regarding display data for a frame to be displayed on the display device controlled by the display control device, the frame of display data being divided into a plurality of tiles, where each tile is formed of display data for a plurality of pixels to be combined into the frame at the remote display control device for display-on the display device, wherein the information comprises, for each tile, either: a tile identification and an associated match identification for the tile, the tile identification including a location of the tile within the frame to be displayed and the match identification identifying a stored tile in a display control cache memory at the display control device and replicated in a host cache memory at the remote host device; or the tile identification and the display data for the tile; wherein, if the information comprises the tile identification and an associated match identification for the tile, the method further comprising: identifying a stored tile in the display control cache memory from the associated match identification; retrieving display data of the stored tile from the display control cache memory or from a local memory based on a pointer retrieved from the display control cache memory; and controlling the display device to display the display data of the stored tile at the location in the tile identification; or if the information comprises the tile identification and the display data for the tile, the method further comprising: determining whether to store the display data of the tile in the display control cache memory as a stored tile or at a location in a local memory with a pointer to the location in the local memory being stored in the display control cache memory, based on a likelihood that the display data of the tile will be repeated in a subsequent frame of display data; and controlling the display device to display the display data from the location in the tile identification.
29. The method according to claim 28, wherein the information alternatively comprises, for each tile: the tile identification and instructions to re-use display data of a corresponding tile at a corresponding location in a previous frame; wherein, if the information comprises the tile identification and the instructions to re-use display data of a corresponding tile at a corresponding location in a previous frame, the method further comprises: identifying the corresponding tile at the corresponding location in the previous frame; and controlling the display device to display the display data of the corresponding tile at the location in the tile identification.
30. The method according to claim 29, wherein the match identification includes a location of the stored tile within the display control cache memory.
31. The method according to claim 29, further comprising synchronizing the display control cache memory with the host cache memory at the remote host device.
32. The method according to claim 29, wherein a location in the display control cache memory where the display data of the tile is stored is determined and associated with a location of the stored tile in the host cache memory of the remote host device.
33. The method according to claim 29, wherein the display data is stored in compressed form.
34. The method according to claim 28, wherein the match identification includes a location of the stored tile within the display control cache memory.
35. The method according to claim 28, further comprising synchronizing the display control cache memory with the host cache memory at the remote host device.
36. The method according to claim 28, wherein a location in the display control cache memory where the display data of the tile is stored is determined and associated with a location of the stored tile in the host cache memory of the remote host device.
37. The method according to claim 28, wherein the display data is stored in compressed form.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
(1) Embodiments of the invention will now be more fully described, by way of example, with reference to the drawings, of which:
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
(12)
(13)
(14)
(15)
DETAILED DESCRIPTION OF THE DRAWINGS
(16) In the description below, the following terms have the following meanings: Cache ID: a reference to a tile's position in a cache, for example the third position from the front of an array, or the key of a lookup table. Tile ID: a reference to a tile's position in a frame, for example a row/column reference. Frame list: a list of pointers to memory locations such that each pointer is associated with a location in a frame and each memory location contains a tile. Display control device: a device placed between the host and the display device for processing display data and forming frames which may be either a separate device or incorporated into a display device.
(17)
(18) These areas [16, 17, 18, 19] and others like them are examples of redundancy. Conventionally, the entire image [11] would be sent from a host to a display control device, and this might be problematic where bandwidth availability is limited. It then also has to be stored prior to being sent to a display device, and because of the large number of tiles that are identical [16, 17, 18, 19], there is significant unnecessary duplication in storage.
(19) If the host and display control device are using entropy checking, the text itself is an example of a collection of tiles that are likely to have high entropy; it is unlikely that any tile containing some letters and some white space will be repeated, especially if the tiles do not line up with specific words in isolation. In this case redundancy is unlikely to be an issue and it may be beneficial not to use the methods of the invention on this specific area of the image [11] while still using it on other areas with lower entropy and therefore a higher likelihood of redundancy. Although this is possible in some embodiments of the invention, for simplicity the processes described below do not use entropy checking. Nonetheless, it will be mentioned where such checking would be appropriate.
(20) Therefore, with reference to
(21) In order to make sure that the cache memory in the display control device and in the host device have the same display data with the same cache IDs, the caches may be synchronized by sending information from one to the other. Alternatively, the way of populating the cache memories may be the same at both the host device and the display control device so that both have the same tile display data with the same cache IDs. For example, when a new frame is received, with new display data, the cache memory may be cleansed of all its display data from previous frames, or the old display data may simply be overwritten by new display data. When a first tile is checked and it is found that it does not match any tile already in the cache memory, the display data for that tile may be stored in the cache memory and a particular cache ID given to that stored tile. Thereafter, more tiles can be used to populate the cache memory as new tiles that do not match any already in the cache memory are received. If desired, some tiles may be flagged as ones that should not be stored in the cache memory, for example if they are unique or rare, so they are unlikely to match any (or only a small number) of later tiles. Furthermore, once all the space for storing tiles in the cache memory has been used, new tiles to be stored can overwrite already stored tiles. Such overwriting can be done according to the age of stored tiles, i.e. to overwrite the oldest ones first, or according to how may matches a tile makes, i.e. to overwrite the rarest matching tiles first. In both cases, some sort of counter to determine the age, or the number of matches, may need to be provided. Of course, some other algorithm for determining which tiles to overwrite could alternatively be used. Provided the same algorithm is used at the display control device, then the cache memories will have the same tiles with the same cache IDs.
(22)
(23)
(24) It will be appreciated that a representation of the display data may be stored and/or transmitted, which may be the display data in uncompressed or in compressed form, or in the form of a hash of the display data resulting from performing a hash function on the display data, a cyclic redundancy check, CRC, value resulting from a CRC operation performed on the display data; or any other compressed form of the display data that can uniquely identify the display data, to enable the comparison operation to determine whether it matches or not, where such a match could be to a particular confidence threshold, rather than an absolute match.
(25)
(26) The cache [25] may store the full data comprising each Tile, or it may store a unique derivative of the data, such as the result of a hashing function. Because such a derivative would be unique to the Tile, it would still be useful for comparison but would require less space for storage than a whole Tile. This is indicated by the note CRC in the diagram, referring to Cyclic Redundancy Check: another unique derivative of data that could be used. The Tile data referred to by each entry in the cache is indicated by the use of patterning, such that the pattern in the cache [25] matches the pattern of the Tile referred to: the data in position iv is indicated with dots, so it is the same as the data in Tile A of the frame buffer [27].
(27) In this embodiment, the host [21] also contains a list [26] of the Tiles that made up the previous frame, ordered by Tile ID, known as the Previous Frame Store. As is the case for the cache [25], this buffer [26] may store the full data comprising each Tile, or it may store a unique derivative of each Tile. The Previous Frame Store [26] is also connected to the encoder [24] for use in checking to see if the Tile at a particular Tile ID has changed since the previous frame.
(28) The encoder [24] is shown connected directly to a decoder [28] in the display control device [22], although in practice there may be output and input engines respectively. These would handle processing such as putting data into packets appropriate to the connection method between the host [21] and the display control device [22] and subsequently removing the packets and converting the data back into display data for use by the decoder [28].
(29) The display control device [22] includes a decoder [28], as mentioned, which is connected to a cache [29] which is arranged to match the cache [25] in the host [21]. In the display control device [22], however, the cache [29] must hold complete Tile data, shown by the entries in the cache [29] patterned to match the Tiles shown in the frame buffers [27, 210] in the same way as on the host [21].
(30) The decoder [28] is also connected to a frame buffer [210], which, when it is complete, will be identical to that [27] produced on the host [21]. In the diagram, it is shown as a complete frame. In turn, it is connected to an output engine [211], which reads the contents of the frame buffer [210] as appropriate for the display device [23] to which it is connected. For example, if the display device [23] expects to be sent a continuous stream of display data which it then rasters onto its display panel in lines, the output engine [211] reads across the entire frame buffer [210] in stripes and outputs data accordingly. Alternatively, if the display device [23] is updated in Tiles, the output engine may just read the data in Tiles from the frame buffer [210].
(31) Finally, the display device [23] connected to the display control device [22] displays the Tiles as arranged in the frame buffer [210].
(32)
(33) At Step S31, the Tile is produced by the host's GPU and may be placed in the frame buffer [27] for storage or may be passed directly to the encoder [24] if it is able to process it immediately. In either case, the encoder [24] reads the Tile and begins processing it. If the cache [25] and any Previous Frame Store [26] hold derivatives of the Tile data for comparison purposes, the Tile will be processed to produce such a derivative at this time.
(34) If the system uses entropy checking, the Tile will also be analysed for high entropy at this time and, if it is found to have high entropy, the cache [25] will not be used. It may be sent with a flag indicating that it has high entropy, so that the display control device [22] will also know that it should bypass use of the cache [29], or the display control device [22] may carry out a similar analysis.
(35) If there is a Previous Frame Store [26] such as that shown in
(36) If the data in the new Tile does not match the data in the Previous Frame Store [26], or there is no Previous Frame Store [26], the process will continue through the boxes that do not have dotted outlines.
(37) At Step S32, the encoder [24] compares the Tile data (or its derivative) with the contents of each cache [25] slot in turn, checking to see if the Tile data is already represented in the cache [25]. If so, the process follows the branch labelled A, otherwise it follows the branch labelled B.
(38) At Step S3A2, the encoder [24] has found a cache entry that matches the Tilein this example, entry ii. The two caches [25, 29] are co-ordinated so the Tile will also be stored at position ii in the cache [29] on the display control device [22], as can be seen from the fact that this entry is also marked with dots. As a result, the Tile data is not required and will be discarded. Instead, the encoder [24] sends the Cache ID ii.
(39) At Step S3A2, the decoder [28] receives the Cache ID and takes the stored Tile data from the cache [29], which contains full Tile data. It is then able to use this data to update the frame buffer [210] held on the display control device [22] at Step S33.
(40) At Step S34, the caches [25, 29] on both devices [21, 22] are updated such that the most recently accessed entry is at the top. In this example, this means that the positions in the cache of entries i and ii will be reversed such that the new entry i is marked with spots and the new entry ii is marked with chevrons. This may occur on the host [21] as soon as it has sent the Cache ID, which means that there is no need for any further synchronisation between the host [21] and the display control device [22] and the caches [25, 29] will always match.
(41) In a second example, the Tile being transmitted is the Tile at Tile ID G, and as a result when the encoder [24] checks the cache [25] at Step S32 it does not find a matching entry. This means that the process will follow the branch labelled B.
(42) At Step S3B1, the Tile is encoded and transmitted to the display control device [22], because since the Tile was not present in the cache [25] on the host [21] it will also not be present in the cache [29] on the display control device [22]. The process of encoding may also include compression and encryption of the data.
(43) The display control device receives the encoded Tile at Step S3B2 and decodes it as appropriate. It then places it in the appropriate position in the frame buffer at Step S33.
(44) At Step S34, the caches are updated. As is the case where the Tile was present in the cache, the host is likely to update its cache as soon as the encoded Tile has been transmitted, but the process is similar.
(45) The encoder [24] at the host [21] will already have transformed the Tile data if necessary into the form required by the cache [25] in order to perform a comparison and see if the Tile is represented in the cache [25] at Step S32. Since this is the most recently-accessed data it needs to be put at the top of the cache [25]: in this case, in slot i. The encoder [24] therefore deletes the least-recently-accessed Tile (slot iv) and copies the contents of the higher slots into the lower slots such that they all move down a rank. It then places the transformed Tile data in slot i.
(46) At the display control device [22], the same process is followed once the transmitted Tile data has been decoded by the decoder [28]. The cache [29] holds full Tile data, so when slot i has been freed as described above, the full Tile data is placed in the cache [29]. This means that the caches [25, 29] continue to match.
(47) This embodiment and accompanying process are useful because they reduce the amount of redundant information being sent to the display control device [22]if an identical Tile has recently been sent, even in a completely different location in the frame, it does not need to be sent again.
(48)
(49) The display control device [42] includes a decoder [47], which is connected to two memories [48, 49]. The first [49] is a main memory which has multiple slots [410], each holding a Tile. Each area [410] of the main memory [49] can be individually addressed, as shown by the labels 1-8. The memory [48] to which the decoder [47] is connected is a buffer, or a cache memory, containing, first, the dimensions of the frame, measured in Tiles. In this case, the frame is two Tiles wide and four deep, so those numbers occupy the first two slots in the buffer [48]. These could be populated upon the connection of a display device [43]. The remainder of the buffer [48] is known as the Frame List and contains pointers to the areas of memory [49] holding the Tiles to be used in the frame, in this case ordered from left to right and top to bottom. For example, the first slot in the Frame List [48] holds the pointer 1, which points to the first Tile in the main memory, which is marked with dots; this is the top left Tile in the frame. The fifth slot holds the same pointer because the Tile on the left in the third row of the frame is also marked with dots.
(50) The memories [48, 49] are then connected to an output engine [411], which reads the pointers in the Frame List [48] and takes data from the appropriate areas of the main memory [49] according to the dimensions stored on the display control device [42] so that the frame is assembled on the fly. The output engine [411] then sends the display data to the display device [43], most conveniently as Tiles but possibly as stripes or lines as described above if the output engine [411] contains a small flow buffer for temporary storage.
(51)
(52) The lookup table [52] holds copies or unique derivatives of all Tiles stored in the main memory [49]. In this example, as in
(53) The decoding engine [53] is further connected to the main memory [49] so that it can store Tiles in the main memory [49], and to the Frame List [48] so that it can update it with new Tiles.
(54)
(55) At Step S61, a Tile is produced on the host [41] as previously described and placed in the frame buffer [46]. Each Tile is encoded and transmitted to the display control device [42] at Step S62, along with its Tile ID to enable the display control device [42] to place it correctly in the Frame List [48]. Optionally, in a host [41] such as that shown in
(56) At Step S63, the transmitted dataeither an encoded Tile or a Tile IDis received by the display control device [42] and passed to the identification engine [51], which determines whether it is a Tile ID or an encoded Tile. It then passes the data to the decoding engine [53] along with a flag indicating its identification. If it is a Tile ID, the decoding engine [53] takes no further action as the data in the Frame List [48] from the previous frame is still correct. If it is an encoded Tile, the decoding engine [53] decodes it and, in this embodiment, generates a CRC for it. This is necessary because the Tile data in the lookup table [52] is referenced by the CRCs of the Tiles, not by the full Tile data. In another embodiment where the full Tile data is used, it will not be necessary to generate a CRC.
(57) At Step S64 the decoding engine [53] checks the lookup table [52] to see if the Tile is already present in memory [49]. If there is a match in the lookup table [42], the process proceeds directly to Step S65 and updates the Frame List [48] with the pointer it finds in the lookup table [52]. For example, if the Tile being transmitted was Tile E, marked with dots, it is already present at position 1 in memory [49] and this location is stored in the first line of the lookup table [52]. The decoding engine [53] therefore places the pointer 1 at Tile ID E in the Frame List [48].
(58) If, at Step S64, there is not a match with one of the entries in the lookup table [52], the process follows the branch labelled A.
(59) At Step S6A1, the decoding engine [53] stores the Tile in a free space in memory [49]. There could be a system provided for identifying the least-recently-used Tile which could be replaced in a case where the memory [49] is full, but otherwise the decoding engine [53] stores the full Tile data in the next free space and records the memory address of that space in the lookup table [52] at Step S6A2, along with the CRC generated at Step S63 or whatever other derivative of the Tile data is required for identification of the correct slot in the lookup table [52].
(60) As an alternative method of identifying Tiles to be removed from memory [49] where there is no free space, the decoder [47] may also calculate the entropy level of each Tile and store this, for example as a third column in the lookup table [52]. Since a Tile with high entropy is less likely to be re-used (allowing for the fact that if a Previous Frame Store [45] is provided, if the same frame is repeated then the Tiles will all be left in place and no further data sent), a new Tile could replace the Tile stored in memory [49] that has the highest entropy.
(61) Finally, at Step S65, the decoding engine [53] stores the pointer to the correct area of memory [410] in the Frame List [48].
(62)
(63) As previously mentioned, the dimensions of the frame, measured in Tiles, are stored in the Frame List [48]in this case the frame is two Tiles wide by four deepand this data is read by the output engine [411] at Step S71. It is therefore aware of the number of Tiles in each row of Tiles and will be able to read that many Tiles from memory [49] at a time.
(64) At Step S72, the output engine [411] reads the appropriate number of Tilesin this case twofrom the memory addresses stored in the Frame List [48] and, at Step S73, stores them in its own smaller internal memory such that it is able to read the image data contained in them in lines as required by the display device [43].
(65) At Step S74, it then reads across both Tiles to form a stream of pixel data, which it transmits to the display device [43] as required. The display device [43] then rasters the data onto its display panel to show the required image at Step S75.
(66)
(67) The display control device [82] contains a cache [89] similar to that shown in
(68)
(69) Thus, it will be clear that are in effect two cache memories (where a cache memory is a small piece of memory close to the processor where data can be placed for quick access). One [89] stores pointers to a limited number of the memory locations in the local memory [811] where the actual display data [812] is stored. This cache memory [89] is analogous to the cache memory in a previous embodiment that (on the display control device [82]) stores full data of the Tiles. The other [93] stores unique values for the display data of each tile along with the pointers to the location of the actual data [812] for that tile. This lookup table is used for looking up the memory locations of the full data [812] according to the unique code. In
(70) Thus, when a Cache ID comes in, only the main cache [89] is used and the decoder [88] retrieves the appropriate pointer from the cache [89] and puts it in the appropriate location in the frame list [810], according to the Tile ID. When a Tile comes in, it is not available in the cache [89] (or a Cache ID would have been sent) so the decoder [88] uses the lookup table [93] to check if the incoming Tile is a duplicate of one already storedit generates the unique value representation and searches for it in the lookup table [93]. If it is present, it takes the appropriate pointer from the lookup table [93] and puts it in the frame list [810], then updates the cache [89] as appropriate. If the Tile isn't in the lookup table [93] either, it is completely new and is stored in memory [811]. The decoder [88] then updates the lookup table [93] by inserting the value representation and the pointer and also updates the frame list [810] and the cache [89] as if it had been in there to start with.
(71) Accordingly, in this embodiment, the method includes: 1. Receive data; 2. If data is a Cache ID: a. Fetch pointer from appropriate position in cache [89]; b. Place pointer in frame list [810]; c. Update cache [89] as appropriate (move most recent value to the top etc.); 3. If data is a Tile: a. Generate unique reference; b. Check if unique reference is present in lookup table [93]; c. If so: i. Fetch pointer from lookup table [93]; d. If not: i. Place full tile data in local memory [811]; ii. Place pointer to tile's location in local memory with unique reference in lookup table [93]; e. Place pointer in frame list [810]; f. Place pointer in cache [89].
(72)
(73) If the Tile matches the Tile data at the corresponding Tile ID in the Previous Frame Store [85], the process follows the branch labelled A and, at Step S10A3, the encoder [84] sends the Tile ID to the display control device [81] and discards the Tile. Because the Previous Frame Store [85] already contains the Tile at that Tile ID, it does not in fact have to be updated at Step S106.
(74) If the Tile does not match the data stored in the Previous Frame Store [85], the encoder [84] follows the branch labelled B and compares it to the contents of the cache [87] as described in
(75) If the Tile matches a Tile already referenced in the cache [87], the process follows the branch labelled D, which from the host side is identical to the process shown in
(76) If the Tile does not match a Tile referenced in the cache [87], the process follows the branch labelled C. At Step S10C5, the encoder [84] encodes and transmits the Tile in the conventional way, and then at Step S10C4 it updates the cache [87] as previously described such that the new Tile is at the top of the cache [87], at Cache ID i.
(77) In both cases, the host [81] then updates the Previous Frame Store [85] at Step S106 in order to place the new Tile in the appropriate location for subsequent comparison.
(78)
(79) At Step S111, the display control device [82] receives the data and it is passed to the identification engine [91] in the decoder [88]. As aforementioned, this then identifies the incoming data as either a Tile ID, a Cache ID, or an encoded Tile.
(80) If the data is a Tile ID, the process follows the branch labelled A and the identification engine [91] sends the Tile ID with a flag indicating that it is a Tile ID to the decoding engine [92]. Since this indicates that the data in the Frame List [810] at that location is already correct, the decoding engine [92] discards the Tile ID, though its presence may be used as part of error checking to ensure that all the Tiles in the frame buffer [86] were at least checked.
(81) If the data is a Cache ID, the process follows the branch labelled B and the identification engine [91] sends the Cache ID with a flag indicating that it is a Cache ID to the decoding engine [92].
(82) At Step S11B1, the decoding engine [92] fetches the pointer to the appropriate data from the cache [89], using the Cache ID as an indication of which slot holds the required data. It then updates the cache [89] as previously described at Step S11B2 and sends the pointer retrieved from the cache [89] to the appropriate position in the Frame List [810] at Step S112.
(83) If the data is an encoded Tile, the process follows the branch labelled C, the details of which are shown in
(84) At Step S11C2, the decoding engine [92] checks the lookup table [93] to see if the Tile is already stored in memory [811] and has simply dropped out of the cache due to infrequent use. If so, the process follows the branch labelled E, if not it follows the branch labelled D.
(85) At Step S11E3, the Tile is represented in the lookup table [93], which means that it is stored in memory [811] and the decoding engine [92] is able to take the pointer from the lookup table [93] in the same way as from the cache [89]. No memory interaction is needed. The decoder [88] then adds the new Tile to the cache [89] such that it displaces the least-recently-used item in the cache [89], as previously described. This will mean that the cache [89] on the display control device [82] will match the cache [87] on the host [81] and Cache IDs can be used. Finally, at Step S112 of
(86) If the Tile was not represented in the lookup table [93], the Tile is not stored in memory [811] and, at Step S11D3, the decoder [88] stores it in memory [811] as previously described. It then updates the lookup table [93] at Step S11D4 by inserting the CRC of the Tile and the memory location [812] where it is now stored.
(87) At Step S11C4, the decoding engine [92] then updates the cache [89] by adding the new Tile, as previously described. Finally, at Step S112 of
(88) It will be appreciated that although only a few particular embodiments of the invention have been described in detail, various modifications and improvements can be made by a person skilled in the art without departing from the scope of the present invention, as defined by the attached claims.