Memory management system and method for GPU-based volume rendering

Information

  • Patent Application
  • 20070229521
  • Publication Number
    20070229521
  • Date Filed
    February 28, 2007
    17 years ago
  • Date Published
    October 04, 2007
    17 years ago
Abstract
A memory manager interfaces between a rendering application and the driver controlling one or more memories. A multi-level brick cache system caches bricks in a memory hierarchy to accelerate the rendering. One example memory hierarchy may include system memory, AGP memory, and graphics memory. The memory manager allows control of brick overwriting based on current or past rendering. Since different memories are typically available, one or more memory managers may control storage of bricks into different memories to optimize rendering. Management of different memory levels, overwriting based on current or previous rendering, and an interfacing memory manager may each be used alone or in any possible combination.
Description

BRIEF DESCRIPTION OF THE DRAWINGS

The components and the figures are not necessarily to scale, emphasis instead being placed upon illustrating the principles of the invention. Moreover, in the figures, like reference numerals designate corresponding parts throughout the different views.



FIG. 1 is a block diagram of one embodiment of a system for managing volume rendering memory;



FIG. 2 is an exemplary representation of interfacing between a rendering application and available memories; and



FIG. 3 is a flow chart diagram of one embodiments of a method for managing volume rendering memory.


Claims
  • 1. In a computer readable storage medium having stored therein data representing instructions executable by a programmed processor for managing volume rendering memory, the storage medium comprising instructions for: volume rendering from a data set representing a three-dimensional volume;storing the data set as bricks; andmanaging, as a function of the volume rendering, the storage of the bricks with a brick cache manager.
  • 2. The instructions of claim 1 wherein storing the data set as bricks comprises partitioning the data set in to sub-volumes, each sub-volume comprising one of the bricks.
  • 3. The instructions of claim 1 wherein managing comprises caching the bricks in different physical memory layers, and wherein the brick cache manager comprises a plurality of memory managers for respective different physical memory layers.
  • 4. The instructions of claim 1 wherein storing comprises storing with a driver, and wherein managing comprises interfacing between the driver and a volume rendering application.
  • 5. The instructions of claim 1 wherein managing comprises storing a brick requested for volume rendering where a memory budget is not exceeded.
  • 6. The instructions of claim 1 wherein managing comprises: assigning a priority number for each stored brick; andupdating the priority as a function of the volume rendering during the volume rendering.
  • 7. The instructions of claim 6 wherein managing and storing comprises: selecting a stored brick of the bricks as a function of the priority for the stored brick relative to priorities for other stored bricks; andoverwriting the selected stored brick with a new brick.
  • 8. The instructions of claim 1 wherein managing comprises: checking for previous storage of a first brick; andcausing storage, with a transfer brick memory allocation, of the first brick if not previously stored.
  • 9. The instructions of claim 1 wherein managing comprises allocating memory space for transfer of bricks and non-brick data.
  • 10. The instructions of claim 1 wherein managing comprises: updating a priority associated with each brick as a function of: use by the volume rendering, view direction of the volume rendering, transfer function of the volume rendering, voxel values of other bricks for the volume rendering, or combinations thereof.
  • 11. A system for managing volume rendering memory, the system comprising: a graphics processing unit operable for volume rendering;a memory responsive to a memory driver; anda processor operable to manage storage of volume data partitioned into subsets, the processor interfacing between the memory driver and the volume rendering.
  • 12. The system of claim 11 wherein the memory is a memory of the graphics processing unit, and wherein the processor is operable to manage storage of the subsets in different physical memory layers, each different physical memory layer associated with a respective memory manager operated by the processor.
  • 13. The system of claim 12 wherein the different physical memory layers comprise the memory of the graphics processing unit, a system memory, and an intermediate memory.
  • 14. The system of claim 11 wherein the processor is operable to check a memory budget for a requested subset requested by the graphics processing unit, the requested subset not previously stored in the memory.
  • 15. The system of claim 11 wherein the processor is operable to assign a priority number for each stored subset, and operable to update the priority as a function of the volume rendering.
  • 16. The system of claim 11 wherein the processor is operable to allocate memory space for transfer of subsets and non-subset data.
  • 17. The system of claim 11 wherein the processor is operable to update a priority associated with each subset as a function of: use by the volume rendering, view direction of the volume rendering, transfer function of the volume rendering, voxel values of other bricks for the volume rendering, or combinations thereof, and operable to overwrite a first of the subsets with a non-stored subset as a function of the priorities.
  • 18. A method for managing volume rendering memory, the method comprising: caching subsets of data representing a volume in different physical memory levels; andmanaging the caching of the subsets in each of the different physical memory levels.
  • 19. The method of claim 18 wherein managing the caching comprises storing subsets as a function of priority in the different physical memory levels.
  • 20. The method of claim 18 wherein managing comprises interfacing between a volume rendering application and memory drivers for the different physical memory levels.
  • 21. The method of claim 18 wherein the different physical memory levels comprise the memory of the graphics processing unit, a system memory, and an accelerated graphics port memory.
  • 22. The method of claim 18 wherein managing comprises checking a memory budget for a requested subset, the requested subset not previously cached in a graphics processing unit memory, the graphics processing unit memory being one of the different physical memory levels.
  • 23. The method of claim 18 further comprising: volume rendering from at least the subsets;wherein managing comprises assigning a priority number for each cached subset, and updating the priority as a function of volume rendering.
  • 24. The method of claim 18 wherein managing comprises allocating memory space for transfer of subsets and non-subset data.
  • 25. The method of claim 18 wherein managing comprises updating a priority associated with each subset as a function of: use by the volume rendering, view direction of the volume rendering, transfer function of the volume rendering, voxel values of other bricks for the volume rendering, or combinations thereof, and overwriting a first of the subsets with a non-stored subset as a function of the priorities.
Provisional Applications (1)
Number Date Country
60788815 Apr 2006 US