Claims
- 1. In a computing environment, a system comprising,
a cache that maintains visual information; a queue for maintaining changes to the visual information as requested by higher level program code; an interface to the cache through which the visual information is accessed by the program code, the program code accessing the visual information via the interface, including requesting access to a container in the cache; a drawing context that opens the container and provides a surface through which the program code requests changes to data in the container; and a batching mechanism, the batching mechanism deferring the writing of any change to the queue until at least the close of the container, such that changes to the container occur as an atomic operation.
- 2. The system of claim 1 wherein at least part of the batching mechanism is incorporated into a function of the drawing context.
- 3. The system of claim 1 wherein the batching mechanism defers the writing of any change to the queue until the close of the container and the close of at least one other container.
- 4. The system of claim 1 wherein the contents of the container are cleared upon opening of the container.
- 5. The system of claim 1 further comprising a rendering mechanism that applies the changes in the queue and traverses the cache to create an instruction stream based on the visual information including the changes.
- 6. The system of claim 1 wherein the rendering mechanism operates on demand in response to change information being in the queue.
- 7. The system of claim 1 wherein the rendering mechanism operates at a fixed rate.
- 8. The system of claim 1 wherein the rendering mechanism comprises a high-level component that executes at a first operating rate to provide the instruction stream to a low-level component, wherein the low-level component runs at a second operating rate to provide drawing commands based on the instructions to a graphics subsystem, and wherein the second operating rate is greater than the first operating rate and corresponds to a frame rate of the graphics subsystem.
- 9. In a computing environment, a method comprising:
maintaining a scene graph; receiving a first request to implement a first change in a structure of the scene graph; receiving a second request to implement a second change in the structure; and implementing the changes to the first and second data atomically by making the changes only upon receipt of an instruction that requests implementation of the changes.
- 10. The method of claim 9, wherein implementing the changes comprises, writing change data to a change queue.
- 11. The method of claim 9, wherein the instruction that requests implementation of the changes corresponds to a close command.
- 12. The method of claim 9 wherein the structure comprises a container, and further comprising, receiving a command to open the container prior to receiving the first and second requests.
- 13. The method of claim 12, wherein the instruction that requests implementation of the changes corresponds to a command to close the container.
- 14. The method of claim 12, further comprising, opening the container and clearing the instructions.
- 15. The method of claim 9 further comprising, receiving an access request to access the structure, and returning a drawing context in response to the access request.
- 16. The method of claim 9 wherein implementing the changes atomically comprises, making the changes based on receipt of the instruction and receipt of at least one other instruction that corresponds to at least one other structure in the scene graph.
- 17. The method of claim 9, wherein implementing the changes comprises, writing change data to a change queue, and further comprising, applying the changes in the change queue to the scene graph and traversing the scene graph to generate an instruction stream based on the scene graph including the changes to the structure.
- 18. The method of claim 9 wherein the changes in the change queue and the traversing of the scene graph occur at a first operating rate to provide the instruction stream to a low-level component, and further comprising, executing the low-level component at a second operating rate to provide drawing commands based on the instructions to a graphics subsystem, the second operating rate being greater than the first operating rate and corresponding to a frame rate of the graphics subsystem.
- 19. A computer-readable medium having computer-executable instructions, comprising:
maintaining a scene graph; receiving a first request to implement a first change in a structure of the scene graph; receiving a second request to implement a second change in the structure; and implementing the changes to the first and second data atomically by making the changes only upon receipt of an instruction that requests implementation of the changes.
- 20. The computer-readable medium of claim 19, wherein implementing the changes comprises, writing change data to a change queue.
- 21. The computer-readable medium of claim 19, wherein the instruction that requests implementation of the changes corresponds to a close command.
- 22. The computer-readable medium of claim 19 wherein the structure comprises a container, and having at least one further computer-executable instruction comprising, receiving a command to open the container prior to receiving the first and second requests.
- 23. The computer-readable medium of claim 22, wherein the instruction that requests implementation of the changes corresponds to a command to close the container.
- 24. The computer-readable medium of claim 22, having further computer-executable instructions comprising, opening the container and clearing the instructions.
- 25. The computer-readable medium of claim 19 having further computer-executable instructions comprising, receiving an access request to access the structure, and returning a drawing context in response to the access request.
- 26. The computer-readable medium of claim 19 wherein implementing the changes atomically comprises, making the changes based on receipt of the instruction and receipt of at least one other instruction that corresponds to at least one other structure in the scene graph.
- 27. The computer-readable medium of claim 19, wherein implementing the changes comprises, writing change data to a change queue, and having further computer-executable instructions comprising, applying the changes in the change queue to the scene graph and traversing the scene graph to generate an instruction stream based on the scene graph including the changes to the structure.
- 28. The computer-readable medium of claim 19 wherein the changes in the change queue and the traversing of the scene graph occur at a first operating rate to provide the instruction stream to a low-level component, and having further computer-executable instructions comprising, executing the low-level component at a second operating rate to provide drawing commands based on the instructions to a graphics subsystem, the second operating rate being greater than the first operating rate and corresponding to a frame rate of the graphics subsystem.
- 29. A method of maintaining visual information, comprising:
receiving data corresponding to a scene graph, the data including a first set of the data without an external reference to the data; changing at least part of the first set of data to changed data in a different format; and maintaining the changed data in the scene graph.
- 30. The method of claim 29 further comprising, maintaining the first set of data in the scene graph, and removing at least part of the first set of data from the scene graph after maintaining the changed data in the scene graph.
- 31. The method of claim 29 wherein changing at least part of the first set of data comprises streaming the first set of data into a data array.
- 32. The method of claim 29 wherein changing at least part of the first set of data comprises processing the first set of data into a bitmap.
- 33. The method of claim 29 wherein changing at least part of the first set of data comprises, processing the first set of data into a result, and maintaining the result.
- 34. The method of claim 29 wherein a subset of the first set of data comprises text data, and wherein changing at least part of the first set of data comprises, processing the subset of data into glyphs, and maintaining the glyphs.
- 35. The method of claim 29 wherein receiving data corresponding to a scene graph further comprises, receiving a second set of data having an external reference to the data.
- 36. The method of claim 35 wherein the second set of data includes a scene graph container, and further comprising, providing a handle to the scene graph container.
- 37. The method of claim 29, further comprising, traversing the scene graph to generate an instruction stream based on the scene graph.
- 38. The method of claim 37 further comprising, caching at least part of the instruction stream.
- 39. A computer-readable medium having computer-executable instructions, comprising:
receiving data: corresponding to a scene graph, the data including a first set of the data without an external reference to the data; changing at least part of the first set of data to changed data in a different format; and maintaining the changed data in the scene graph.
- 40. The computer-readable medium of claim 39 having further computer executable instructions comprising, maintaining the first set of data in the scene graph, and removing at least part of the first set of data from the scene graph after maintaining the changed data in the scene graph.
- 41. The computer-readable medium of claim 39 wherein changing at least part of the first set of data comprises streaming the first set of data into a data array.
- 42. The computer-readable medium of claim 39 wherein changing at least part of the first set of data comprises processing the first set of data into a bitmap.
- 43. The computer-readable medium of claim 39 wherein changing at least part of the first set of data comprises, processing the first set of data into a result, and maintaining the result.
- 44. The computer-readable medium of claim 39 wherein a subset of the first set of data comprises text data, and wherein changing at least part of the first set of data comprises, processing the subset of data into glyphs, and maintaining the glyphs.
- 45. The computer-readable medium of claim 39 wherein receiving data corresponding to a scene graph further comprises, receiving a second set of data having an external reference to the data.
- 46. The computer-readable medium of claim 45 wherein the second set of data includes a scene graph container, and having further computer executable instructions comprising, providing a handle to the scene graph container.
- 47. The computer-readable medium of claim 39 having further computer executable instructions comprising, traversing the scene graph to generate an instruction stream based on the scene graphs.
- 48. The computer-readable medium of claim 47 having further computer executable instructions comprising, caching at least part of the instruction stream.
- 49. A method of maintaining visual information, comprising:
receiving data corresponding to a scene graph; determining that the data does not require an external reference thereto; and maintaining the data in the scene graph without an external reference thereto.
- 50. The method of claim 49 further comprising, changing the data into changed data, and maintaining the changed data in the scene graph.
- 51. The method of claim 50 wherein changing the data comprises streaming the first set of data into a data array.
- 52. The method of claim 50 wherein changing the data comprises processing the first set of data into a bitmap.
- 53. The method of claim 50 wherein changing the data comprises, processing the first set of data into a result, and maintaining the result.
- 54. The method of claim 50 wherein the data comprises text data, and wherein changing the data comprises, processing the data into glyphs, and maintaining the glyphs.
- 55. The method of claim 49 further comprising, traversing the scene graph to generate an instruction stream based on the scene graph.
- 56. The method of claim 55 further comprising, caching at least part of the instruction stream.
- 57. A computer-readable medium having computer-executable instructions, comprising:
receiving data corresponding to a scene graph; determining that the data does not require an external reference thereto; and maintaining the data in the scene graph without an external reference thereto.
- 58. The computer-readable medium of claim 57 having further computer-executable instructions, comprising, changing the data into changed data, and maintaining the changed data in the scene graph.
- 59. The computer-readable medium of claim 58 wherein changing the data comprises streaming the first set of data into a data array.
- 60. The computer-readable medium of claim 58 wherein changing the data comprises processing the first set of data into a bitmap.
- 61. The computer-readable medium of claim 58 wherein changing the data comprises, processing the first set of data into a result, and maintaining the result.
- 62. The computer-readable medium of claim 58 wherein the data comprises text data, and wherein changing the data comprises, processing the data into glyphs, and maintaining the glyphs.
- 63. The computer-readable medium of claim 57 having further computer-executable instructions, comprising, traversing the scene graph to generate an instruction stream based on the scene graph.
- 64. The computer-readable medium of claim 63 having further computer-executable instructions, comprising, caching at least part of the instruction stream.
- 65. In a system having a processor and memory, a system for producing visible output, comprising:
a cache in the memory that maintains visual information including data and containers in a format that is independent of a receiving entity; a rendering mechanism that traverses the cache to provide processed data, the processed data corresponding to a format understood by a receiving entity; and the receiving entity receiving the instruction stream and producing the visible output therefrom.
- 66. The system of claim 65 wherein the receiving entity comprises a graphics subsystem and the rendering mechanism provides the processed data for direct rendering by the graphics subsystem.
- 67. The system of claim 65 wherein the receiving entity comprises a low-level engine, and the rendering mechanism provides the processed data as an instruction stream for the low-level engine.
- 68. The system of claim 67 wherein the low-level engine processes the instruction stream in to data for rendering by a graphics subsystem.
- 69. The system of claim 65 wherein the receiving entity comprises a printer.
- 70. The system of claim 65 wherein the receiving entity comprises a remote machine on a network.
- 71. In a computing environment, a method comprising:
maintaining visual information in a cache data structure including containers and data; determining when at least one container is not needed for providing visual information corresponding thereto when rendered; marking the container as invalid; and reclaiming at least some of the resources associated with maintaining the container.
- 72. The method of claim 71 further comprising, processing the cache data structure to render output therefrom.
- 73. The method of claim 72 further comprising:
while processing the cache data structure:
1) detecting a container marked as invalid that is now needed for providing visual information; 2) calling back to higher-level program code to provide data for the container; and 3) receiving the data; such that the output rendered from the cache includes output based on the data received.
- 74. The method of claim 73 further comprising, waiting for the data from the higher-level program code before completing processing of the cache data structure.
- 75. The method of claim 73 wherein calling back to higher-level program code comprises, queuing a request back to a thread executing the higher-level program code.
- 77. A computer-readable medium having computer-executable instructions, comprising:
maintaining visual information in a cache data structure including containers and data; determining when at least one container is not needed for providing visual information corresponding thereto when rendered; marking the container as invalid; and reclaiming at least some of the resources associated with maintaining the container.
- 78. The computer-readable medium of claim 77 having at least one further computer-executable instruction comprising, processing the cache data structure to render output therefrom.
- 79. The computer-readable medium of claim 78 having further computer-executable instructions comprising:
while processing the cache data structure:
1) detecting a container marked as invalid that is now needed for providing visual information; 2) calling back to higher-level program code to provide data for the container; and 3) receiving the data; such that the output rendered from the cache includes output based on the data received.
- 80. The computer-readable medium of claim 79 having further computer-executable instructions comprising, waiting for the data from the higher-level program code before completing processing of the cache data structure.
- 81. The computer-readable medium of claim 79 wherein calling back to higher-level program code comprises, queuing a request back to a thread executing the higher-level program code.
- 82. In a computing environment, a method comprising:
maintaining visual information in a cache data structure including containers and data; reserving an invalid container for storing graphics information, without having space allocated for the graphics information; and rendering the data structure into data for receipt by another entity, including determining whether the graphics information of the invalid container is needed, and if so:
1) allocating resources for the graphics information; 2) calling back to higher-level program code to provide the graphics information; 3) receiving the graphics information; and 4) outputting the data for receipt by another entity including information corresponding to the graphics information received.
- 83. The method of claim 82 wherein reserving the invalid container comprises, marking a container as invalid and reclaiming space allocated for graphics information.
- 84. The method of claim 82 wherein reserving the invalid container comprises, receiving instructions from the higher-level program code to reserve an invalid container.
- 85. The method of claim 82 wherein outputting the data for receipt by another entity includes, outputting an instruction stream for a low-level engine that converts the instruction stream to graphics information understood by a graphics subsystem.
- 86. The method of claim 82 further comprising, waiting for the data from the higher-level program code before completing the rendering of the cache data structure.
- 87. The method of claim 82 wherein calling back to higher-level program code comprises, queuing a request back to a thread executing the higher-level program code.
- 88. A computer-readable medium having computer-executable instructions, comprising:
maintaining visual information in a cache data structure including containers and data; reserving an invalid container for storing graphics information, without having space allocated for the graphics information; and rendering the data structure into data for receipt by another entity, including determining whether the graphics information of the invalid container is needed, and if so:
1) allocating resources for the graphics information; 2) calling back to higher-level program code to provide the graphics information; 3) receiving the graphics information; and 4) outputting the data for receipt by another entity including information corresponding to the graphics information received.
- 89. The computer-readable medium of claim 88 wherein reserving the invalid container comprises, marking a container as invalid and reclaiming space allocated for graphics information.
- 90. The computer-readable medium of claim 88 wherein reserving the invalid container comprises, receiving instructions from the higher-level program code to reserve an invalid container.
- 91. The computer-readable medium of claim 88 wherein outputting the data for receipt by another entity includes, outputting an instruction stream for a low-level engine that converts the instruction stream to graphics information understood by a graphics subsystem.
- 92. The computer-readable medium of claim 88 having further computer-executable instructions comprising, waiting for the data from the higher-level program code before completing the rendering of the cache data structure.
- 93. The computer-readable medium of claim 88 wherein calling back to higher-level program code comprises, queuing a request back to a thread executing the higher-level program code.
- 94. A computer-readable medium having computer-executable components, comprising:
a cache that maintains visual information; a queue for maintaining changes to the visual information as requested by higher level program code; an interface to the cache through which the visual information is accessed by the program code, the program code accessing the visual information via the interface, including requesting access to a container in the cache; and a drawing context that opens the container and provides a surface through which the program code requests changes to data in the container; and a batching mechanism, the batching mechanism deferring the writing of any change to the queue until at least the close of the container, such that changes to the container occur as an atomic operation.
- 95. The computer-readable medium of claim 94 wherein at least part of the batching mechanism is incorporated into a function of the drawing context.
- 96. The computer-readable medium of claim 94 wherein the batching mechanism defers the writing of any change to the queue until the close of the container and the close of at least one other container.
- 97. The computer-readable medium of claim 94 wherein the contents of the container are cleared upon opening of the container.
- 98. The computer-readable medium of claim 94 having at least one further computer-executable component comprising a rendering mechanism that applies the changes in the queue and traverses the cache to create an instruction stream based on the visual information including the changes.
- 99. The computer-readable medium of claim 93 wherein the rendering mechanism operates on demand in response to change information being in the queue.
- 100. The computer-readable medium of claim 93 wherein the rendering mechanism operates at a fixed rate.
- 101. The computer-readable medium of claim 93 wherein the rendering mechanism comprises a high-level component that executes at a first operating rate to provide the instruction stream to a low-level component, wherein the low-level component runs at a second operating rate to provide drawing commands based on the instructions to a graphics subsystem, and wherein the second operating rate is greater than the first operating rate and corresponds to a frame rate of the graphics subsystem.
- 102. A computer-readable medium having computer-executable components, comprising:
a cache that maintains visual information including data and containers in a format that is independent of a receiving entity; a rendering mechanism that traverses the cache to provide processed data, the processed data corresponding to a format understood by a receiving entity; and the receiving entity receiving the instruction stream and producing the visible output therefrom.
- 103. The computer-readable medium of claim 102 wherein the receiving entity comprises a graphics subsystem and the rendering mechanism provides the processed data for direct rendering by the graphics subsystem.
- 104. The computer-readable medium of claim 102 wherein the receiving entity comprises a low-level engine, and the rendering mechanism provides the processed data as an instruction stream for the low-level engine.
- 105. The computer-readable medium of claim 104 wherein the low-level engine processes the instruction stream in to data for rendering by a graphics subsystem.
- 106. The computer-readable medium of claim 102 wherein the receiving entity comprises a printer.
- 107. The computer-readable medium of claim 102 wherein the receiving entity comprises a remote machine on a network.
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] The present invention claims priority to U.S. Provisional Patent Application Serial No. 60/330,418, filed Oct. 18, 2001. The present invention is related to United States Patent Applications entitled “Generic Parameterization for a Scene Graph” (Attorney Docket No. 3130) and “Multiple-Level Graphics Processing System and Method” (Attorney Docket No. 3140), assigned to the assignee of the present application, filed concurrently herewith, and hereby incorporated by reference in their entireties.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60330418 |
Oct 2001 |
US |