Claims
- 1. A method for displaying stored video data on a display device, wherein the display device has a plurality of scan lines that are periodically refreshed, the method comprising:
maintaining a virtual display refresh list comprising a plurality of pointers, wherein each pointer points to a segment of stored video data stored in a memory, wherein each segment corresponds to at least part of a scan line portion of a visual object to be displayed on the display device; executing the refresh list, wherein said executing comprises:
reading each pointer in said virtual display refresh list, and accessing corresponding segments of stored video data; and storing at least a portion of said accessed video data into a cache memory area for use in a subsequent refresh list execution cycle.
- 2. The method for displaying video data as recited in claim 1, further comprising: generating video signals from said accessed video data, and outputting the generated video signals to the display device.
- 3. The method as recited in claim 2, further comprising accessing at least part of the video data stored in the cache memory area on subsequent refresh list execution cycles if at least one of the visual objects corresponding to the video data stored in the cache memory area have not changed since the video data was stored in the cache memory area.
- 4. The method as recited in claim 3, further comprising detecting if at least one of the visual objects corresponding to the video data stored in the cache memory area have not changed since the video data was stored in the cache memory area.
- 5. The method for displaying video data as recited in claim 1, further comprising refreshing the display device using the generated video signals and a segment of the video data stored in the memory
- 6. The method as recited in claim 5, wherein said storing further comprises updating the pointers in the virtual display refresh list to point to the corresponding video data stored in the cache memory area in lieu of the corresponding video data stored in the memory.
- 7. The method as recited in claim 6, further comprising updating the pointers in the virtual display refresh list to point to the corresponding video data stored in the memory in lieu of the corresponding video data stored in the cache memory area when one or more of the corresponding visual objects change.
- 8. The method as recited in claim 1, wherein said executing further comprises skipping over pointers to segments that correspond to video data stored in the cache memory area if none of the visual objects corresponding to the video data stored in the cache memory area have changed since the video data was stored in the cache memory area.
- 9. The method as recited in claim 1, wherein said maintaining further comprises updating the refresh list to point to the video data stored in the cache memory area if none of the visual objects corresponding to the video data stored in the cache memory area have changed since the video data was stored in the cache memory area.
- 10. The method as recited in claim 9, wherein said display device's scan lines are refreshed in a predetermined sequence, and wherein the pointers are ordered in the virtual display refresh list according to the display device's scan line refresh sequence.
- 11. The method for displaying video data as recited in claim 1, further comprising decompressing object parameters usable to regenerate the video data.
- 12. The method for displaying video data as recited in claim 11, further comprising compressing the object parameters for future video generation.
- 13. The method as recited in claim 2, wherein said storing further comprises compressing the video data stored in the memory cache area.
- 14. The method as recited in claim 13, further comprising decompressing the video data stored in the memory cache area, wherein said compressing and said decompressing are performing in parallel for different particular video data.
- 15. The method as recited in claim 13, further comprising decompressing the video data stored in the memory cache area before generating video signals therewith.
- 16. The method as recited in claim 1, wherein the visual objects comprise one or more of the following: textual objects, 2-D objects, 3-D objects, audio objects, and digital video objects.
- 17. The method as recited in claim 1, wherein the virtual display refresh list further comprises one or more draw display list (DDL) pointers, each pointing to a draw display list object configured to draw one or more of said visual objects in said memory.
- 18. The method as recited in claim 17, further comprising caching said DDL objects into the cache memory area.
- 19. The method as recited in claim 18, further comprising compressing said DDL objects before said caching.
- 20. The method as recited in claim 19, further comprising decompressing said DDL objects.
- 21. The method as recited in claim 17, wherein said executing further comprising skipping DDL pointers when the corresponding visual objects drawn by the corresponding subroutines have not changed since the previous execution cycle.
- 22. The method as recited in claim 1, wherein said executing further comprises: redrawing said visual objects in said memory in response to said visual objects changing since the previous execution cycle, and updating said pointers to point to corresponding scan line portions of said redrawn visual objects in said memory.
- 23. A graphics controller configured to display visual objects on an external display device, said graphics controller comprising:
a graphics engine configured to be coupled to an external memory, wherein said graphics engine is configured to receive pixel and object data from said memory, and store manipulated pixel and object data to said memory; and a virtual display refresh list (VDRL) engine configured to be coupled to said memory, wherein said VDRL engine is configured to maintain a VDRL comprising a plurality of pointers, each pointing to a particular location in said memory, wherein each particular location stores video data comprising a segment of a scan line portion of a visual object, wherein said VDRL engine is configured to repeatedly execute said VDRL by accessing the locations in said memory pointed to by said pointers, wherein said VDRL engine is configured to be coupled to a cache memory area, wherein said VDRL engine is configured to store video data accessed by said VDRL engine while executing said VDRL into said cache memory area.
- 24. The graphics controller as recited in claim 23, wherein said VDRL engine is configured to access said cache memory area in subsequent VDRL execution cycles if the corresponding visual object has not changed since the corresponding video data was stored in said cache memory area.
- 25. The graphics controller as recited in claim 23, wherein said VDRL engine is configured to read video data comprising a particular segment of a particular scan line portion of a particular visual object from said cache memory area in lieu of said memory if the particular visual object corresponding to said particular segment has not changed since the corresponding video data was stored in said cache memory area.
- 26. The graphics controller as recited in claim 24, further comprising a digital to analog converter (DAC) coupled to receive the results from the execution of said VDRL by said VDRL engine, wherein said DAC is configured to translate said segments into analog video signals and output said analog video signals to said external display device.
- 27. The graphics controller as recited in claim 26, wherein said graphics engine is further configured to perform rendering.
- 28. The graphics controller as recited in claim 25, wherein said VDRL engine is configured to access said cache memory area in subsequent execution cycles if the corresponding visual objects have not changed since the corresponding scan line segments were stored in said cache memory area.
- 29. The graphics controller as recited in claim 25, wherein said VDRL engine is configured to access said cache memory area in subsequent execution cycles if the corresponding visual objects have not been redrawn since the corresponding scan line segments were stored in said cache memory area.
- 30. The graphics controller as recited in claim 28, further comprising a compression/decompression unit configured to compress the scan line segments accessed by the VDRL engine during the execution of the VDRL, wherein said scan line segments are compressed by said compression/decompression unit before being stored in said cache memory area.
- 31. The graphics controller as recited in claim 30, wherein said
compression/decompression unit is further configured to decompress video data read from said cache memory area.
- 32. The graphics controller as recited in claim 23, wherein said VDRL engine is configured to execute said VDRL once for each time said external display device is refreshed.
- 33. The graphics controller as recited in claim 26, further comprising a display first-in first-out (FIFO) memory coupled to said DAC, wherein said display FIFO memory is configured to store at least one fall scan line of video data.
- 34. The graphics controller as recited in claim 33, further comprising a YUV-to-RGB converter coupled to said FIFO memory, wherein said scan line segments are stored in said memory in YUV format, and wherein said DAC is configured to receive scan line segments in RGB format.
- 35. The graphics controller as recited in claim 23, wherein scan line segments accessed by the VDRL engine while executing the VDRL are stored into said cache memory area in YUV format.
- 36. The graphics controller as recited in claim 35, wherein said VDRL engine is configured to store said VDRL in said main system memory.
- 37. The graphics controller as recited in claim 36, wherein said VDRL engine is configured to maintain two copies of said VDRL, wherein one copy is executed while the second copy is being updated.
- 38. The graphics controller as recited in claim 23, wherein said VDRL further comprises one or more draw display list (DDL) pointers that point to subroutines that draw one or more visual objects into said main system memory.
- 39. The graphics controller as recited in claim 23, wherein said VDRL further comprises one or more draw display list (DDL) pointers that point to DDL objects that draw one or more visual objects into said main system memory, wherein the DDL objects are embedded within said VDRL.
- 40. The graphics controller as recited in claim 38, wherein said VDRL engine is configured to update the pointers within the VDRL to reflect changes in location and content of said objects in said main system memory.
- 41. The graphics controller as recited in claim 40, wherein said graphics engine is configured to receive and execute the subroutines pointed to by the VDRL when said VDRL engine executes said VDRL.
- 42. The graphics controller as recited in claim 40, wherein said graphics engine is configured to receive and execute said DDL objects pointed to or embedded in the VDRL when said VDRL engine executes said VDRL.
- 43. The graphics controller as recited in claim 41, wherein said VDRL engine is configured to skip DDL pointers that point to subroutines that draw visual objects that have not changed since the previous execution cycle.
- 44. The graphics controller as recited in claim 41, wherein said VDRL engine is configured to periodically skip DDL pointers that point to subroutines that draw objects that have lower refresh rates than said display device.
- 45. The graphics controller as recited in claim 41, wherein said VDRL engine is configured to periodically skip DDL pointers that point to subroutines that draw objects that have lower draw/redraw rates than said display device.
- 46. The graphics controller as recited in claim 41, wherein said visual objects each have an independent redraw.
- 47. The graphics controller as recited in claim 41, wherein said visual objects each have an independent refresh rate.
- 48. The graphics controller as recited in claim 41, wherein said visual objects comprise one or more of the following object types: textual objects, 2D objects, 3D objects, audio objects, and digital video objects.
- 49. The graphics controller as recited in claim 43, wherein said VDRL engine is configured to receive indications from operating systems, Internet plug-ins, LAN, WAN and device drivers when one of said visual objects changes.
- 50. A computer system comprising:
a CPU; a memory configured to store one or more visual objects; a display device configured to display an image that is periodically refreshed, and a graphics controller coupled to said CPU, said memory, and said display device, wherein said graphics controller is configured to maintain a virtual display refresh list (VDRL) comprising a plurality of pointers that point to scan line portions of visual objects in said memory, wherein said graphics controller is configured to repeatedly execute said VDRL and refresh the display device's image by conveying to said display device the scan line portions of visual objects read from the memory when executing the VDRL, wherein said graphics controller is further configured to store said scan line portions in a cache memory area for use in subsequent VDRL execution cycles.
- 51. The computer system as recited in claim 50, wherein said graphics controller is configured to read said scan line portions from said cache memory area in lieu of said memory when the visual objects corresponding to said scan line portions have not changed since they were stored in said cache memory area.
- 52. The computer system as recited in claim 50, wherein said graphics controller is further configured to compress said scan line portions before storing said scan line portions in said cache memory area.
- 53. The computer system as recited in claim 52, wherein said graphics controller is configured to decompress scan line portions read from said cache memory area before conveying said scan line portions to said display device.
- 54. The computer system as recited in claim 53, wherein said scan line portions are stored in said memory in YUV format, wherein said graphics controller is configured to convert said scan line portions into RGB format before conveying said scan line portions to said display device.
- 55. The computer system as recited in claim 50, wherein said graphics controller is configured to store said scan line portions in said cache memory area using a format selected from the group consisting of: RGB format, YUV format, compressed RGB format, and compressed YUV format.
- 56. The computer system as recited in claim 50, wherein said graphics controller further comprises a digital-to-analog convert (DAC) configured to convert said scan line portions into analog signals before they are conveyed to said display device.
- 57. The computer system as recited in claim 50, wherein said visual objects comprise one or more of the following: 3D objects, 2D objects, textual object, audio objects, and digital video objects.
- 58. The computer system as recited in claim 57, wherein each visual object has an independent refresh or redraw rates.
- 59. The computer system as recited in claim 58, wherein said VDRL further comprises one or more draw display list (DDL) pointers, wherein each DDL pointer points to a subroutine that is configured to draw an updated version of one or more of said visual objects in said memory.
- 60. The computer system as recited in claim 59, wherein said graphics controller is further configured to compress said DDLs for storage in the cache memory area.
- 61. The computer system as recited in claim 60, wherein said graphics controller is further configured to decompress said DDLs read from the cache memory area.
- 62. The computer system as recited in claim 59, wherein said graphics controller is further configured to compress said DDLs for storage in the memory.
- 63. The computer system as recited in claim 60, wherein said graphics controller is further configured to decompress said DDLs read from the memory.
- 64. The computer system as recited in claim 59, wherein said graphics controller is configured to refrain from executing DDL pointers in said VDRL if the DDL pointers point to subroutines that draw visual objects that have not changed since the previous execution of the VDRL.
- 65. The computer system as recited in claim 64, wherein said graphics controller is configured to receive indications of which visual objects have changed from an operating system executing on said CPU.
- 66. The computer system as recited in claim 64, wherein said graphics controller is configured to receive indications of which visual objects have changed from a device driver executing on said CPU.
- 67. The computer system as recited in claim 66, wherein said graphics controller is further configured to update the pointers in said VDRL to reflect changes in said visual objects.
- 68. The computer system as recited in claim 67, wherein said graphics controller is further configured to process the scan line portions of video data read from the memory during execution of the VDRL before the scan line portions are conveyed to said display device.
- 69. The computer system as recited in claim 68, wherein said graphics controller comprises a 3D graphics engine configured to execute subroutines that draw 3D objects in said memory, wherein said 3D graphics engine is configured to draw said 3D objects in said memory in scan line format.
- 70. The computer system as recited in claim 68, wherein said graphics controller comprises a graphics engine configured to execute subroutines and a memory controller configured to perform memory transfers when said VDRL is executed.
- 71. The computer system as recited in claim 69, wherein each object drawn in said memory has a color resolution that is independent of the color resolution of any other object drawn in said memory.
- 72. The computer system as recited in claim 69, wherein said graphics controller is configured to store said VDRL in said memory, wherein said memory is a main system memory.
- 73. The computer system as recited in claim 72, wherein said cache memory area is part of said main system memory.
- 74. A computer system comprising:
a CPU; a display device configured to display an image comprising a plurality of scan lines, wherein said image is refreshed periodically; a memory configured to receive and store video data, wherein said video data is stored in a plurality of different memory areas within said memory; and a graphics controller coupled to said CPU, said display device, and said memory, wherein said graphics controller is configured to maintain a virtual display refresh list of pointers, wherein each pointer points to a segment of the video data stored in said memory that corresponds to a particular visible portion of one of said plurality of scan lines, wherein said graphics controller is configured to execute said refresh list by accessing the segments of video data pointed to by the pointers and conveying the accessed segments to said display device in scan line order, wherein said display device is configured to use said segments to refresh said image; and a cache memory area coupled to said graphics controller, wherein said cache memory area is configured to cache accessed segments of video data, wherein said graphics controller is configured to read segments of video data from said cache memory area instead of said plurality of different memory areas during subsequent refresh list execution cycles if the corresponding video data stored in the cache memory area have not changed since the segments of video data was stored in the cache memory area.
- 75. The computer system as recited in claim 74, wherein said graphics controller is configured to process said accessed segments of video data before conveying them to said display device.
- 76. The computer system as recited in claim 75, wherein said segments are cached after being processed.
- 77. The computer system as recited in claim 76, wherein said video data is stored in said memory in YUV format, wherein said graphics controller is configured to convert said accessed segments of video data from YUV format to RGB format before conveying said accessed segments of video data to said display device.
- 78. The computer system as recited in claim 77, wherein said cache memory area is configured to store accessed segments of video data in YUV or RGB format.
- 79. The computer system as recited in claim 74, wherein said accessed segments are compressed prior to being stored in said cache memory area, and wherein said segments stored in said cache memory area are decompressed prior to being conveyed to said display device.
- 80. The computer system as recited in claim 74, wherein said graphics controller is configured to add tags to pointers in said virtual display refresh list that point to segments of video data that are stored in said cache memory area.
- 81. The computer system as recited in claim 74, wherein said memory cache area is part of said memory.
- 82. The computer system as recited in claim 74, wherein said graphics controller is configured to store said virtual display refresh list in at a predetermined location within said memory.
- 83. The computer system as recited in claim 74, wherein said virtual display refresh list further comprises draw display list (DDL) pointers that point to draw list subroutines that store video data representing one or more visual objects into said memory when executed.
- 84. The computer system as recited in claim 83, wherein said graphics controller is configured to refrain from executing draw list subroutines that correspond to visual objects that have not changed since the previous execution cycle.
- 85. The computer system as recited in claim 83, wherein said virtual display refresh list further comprises logic and conditional states configured to direct the execution of the virtual display refresh list.
Continuation Data
[0001] This application is a continuation of U.S. utility application Ser. No. 09/496,244 titled “Improved Video Controller System with Screen Caching” filed Feb. 1, 2000, whose inventor was Thomas A. Dye.
[0002] The following applications are related to the present application, and are hereby incorporated by reference as though fully and completely set forth herein:
[0003] Ser. No. 08/340,667 titled “Integrated Video and Memory Controller With Data Processing and Graphical Processing Capabilities” and filed Nov. 16, 1994 (5143-00100)
[0004] Ser. No. 08/463,106 titled “Memory Controller Including Embedded Data Compression and Decompression Engines” and filed Jun. 5, 1995 (5143-00200) Ser. No. 08/916,464 titled “Memory Controller Including Embedded Data Compression and Decompression Engines” and filed Aug. 8, 1997 (5143-00201) Ser. No. 08/522,129 titled “Memory and Graphics Controller Which Performs Pointer-Based Display List Video Refresh Operations” and filed Aug. 31, 1995 (5143-00300)
[0005] Ser. No. 08/565,103 titled “Memory and Graphics Controller Which Performs Pointer-Based Display List Video Refresh Operations” and filed Nov. 30, 1995 (5143-00301)
[0006] Ser. No. 08/770,017 titled “System and Method for Simultaneously Displaying a Plurality of Video Data Objects Having Different Bit Per Pixel Formats” and filed Dec. 19, 1996 (5143-00302). Ser. No. 08/604,670 titled “Graphics System Including a Virtual Frame Buffer Which Stores Video/Pixel Data in a Plurality of Memory Areas” and filed Feb. 21, 1996 (5143-00303).
Continuations (1)
|
Number |
Date |
Country |
Parent |
09496244 |
Feb 2000 |
US |
Child |
10085274 |
Feb 2002 |
US |