Efficient method for storing texture maps in multi-bank memory
First Claim
1. A method for storing texture maps in a multi-bank memory with more than two memory banks, the method comprising:
- (a) reading a series of mip maps from a main system memory, wherein successive mip maps in said series have successively smaller sizes;
(b) classifying each mip map in said series as large or small based on the mip map'"'"'s size with respect to a size limit;
(c) dividing each mip map of said series into a first portion and a second portion, wherein said first portion and said second portion of each mip map comprise triangular sections separated by a line u=v, wherein u is a horizontal axis for the mip map and v is a vertical axis for the mip map;
(d) storing the first portions of any two consecutive large mip maps of said series into distinct memory banks within the multi-bank memory;
(e) storing the second portions of any two consecutive large mip maps of said series into distinct memory banks, wherein the first portion and the second portion of large mip maps are stored in distinct memory banks of said multi-bank memory; and
(f) storing the first and second portions of small mip maps, after a largest small mip map in said series, in a first memory bank of said multi-bank memory.
2 Assignments
0 Petitions
Accused Products
Abstract
A method for storing mip map series in a multi-bank texture memory is disclosed. Each mip map has a different size and represents a different resolution version of a texture map image that is to be mapped onto a three dimensional object comprising one or more polygons. To prevent page faults when accessing corresponding texels in consecutive mip maps, each mip map is divided in two halves. The halves are stored in different banks of the multi-bank texture memory. The banks used are alternated so that corresponding texels in consecutive mip maps are stored in different memory banks. Mip maps may be categorized as large or small, with all small mip maps after the first being stored in their entirety in one memory bank. Small mip maps are those that are equal to or smaller than the page size of the multi-bank texture memory. A computer system, graphics subsystem, and software program capable to efficiently store mip map series in a multi-bank texture memories are also disclosed.
67 Citations
27 Claims
-
1. A method for storing texture maps in a multi-bank memory with more than two memory banks, the method comprising:
-
(a) reading a series of mip maps from a main system memory, wherein successive mip maps in said series have successively smaller sizes;
(b) classifying each mip map in said series as large or small based on the mip map'"'"'s size with respect to a size limit;
(c) dividing each mip map of said series into a first portion and a second portion, wherein said first portion and said second portion of each mip map comprise triangular sections separated by a line u=v, wherein u is a horizontal axis for the mip map and v is a vertical axis for the mip map;
(d) storing the first portions of any two consecutive large mip maps of said series into distinct memory banks within the multi-bank memory;
(e) storing the second portions of any two consecutive large mip maps of said series into distinct memory banks, wherein the first portion and the second portion of large mip maps are stored in distinct memory banks of said multi-bank memory; and
(f) storing the first and second portions of small mip maps, after a largest small mip map in said series, in a first memory bank of said multi-bank memory.
-
-
2. A method for storing texture maps in a multi-bank memory with at least two memory banks comprising:
-
(a) reading a series of mip maps from a main system memory, wherein successive mip maps in said series have successively smaller sizes;
(b) classifying each mip map in said series as large or small based on the mip map'"'"'s size with respect to a size limit;
(c) dividing each mip map of said series into a first portion and a second portion;
(d) storing the first portions of any two consecutive large mip maps of said series into distinct memory banks within the multi-bank memory; and
(e) storing the second portions of any two consecutive large mip maps of said series into distinct memory banks, wherein the first portion and the second portion of large mip maps are stored in distinct memory banks of said multi-bank memory;
(f) storing the first and second portions of small mip maps, after a largest small mip map in said series, in a first memory bank of said multi-bank memory. - View Dependent Claims (3, 4, 5, 6, 7)
storing the first portion and the second portion of the largest small mip map into distinct memory banks of the multi-bank memory.
-
-
8. A graphics subsystem comprising:
-
a multi-bank memory with at least two memory banks, wherein each of said memory banks comprises a plurality of memory pages;
a storing means for receiving and storing a series of mip maps, wherein successive mip maps of said series have successively smaller sizes, wherein each mip map of said series includes a first portion and a second portion, wherein the storing means is coupled to said multi-bank memory and is configured to (a) classify the mip maps of said series as large or small based on the mip maps'"'"' sizes with respect to a size limit, (b) store the first portions of any two consecutive large mip maps of said series in distinct memory banks of said multi-bank memory, (c) store the second portions of any two consecutive large mip maps of said series in distinct memory banks of said multi-bank memory, (d) store the first and second portions of small mip maps, after a first small mip map in said series, into a first memory bank of said multi-bank memory. - View Dependent Claims (9, 10, 11, 12, 13)
-
-
14. A computer system comprising:
-
a central processing unit (CPU);
a main system memory coupled to said CPU; and
a graphics subsystem coupled to said main system memory, wherein said graphics subsystem comprises;
a texture memory comprising at least two memory banks, and storage logic coupled between said texture memory and said main system memory, wherein said storage logic is configured to receive a series of mip maps from said main system memory, wherein successive mip maps of said series have successively smaller sizes, wherein the series of mip maps include large mip maps having sizes larger than a page and small mip maps having sizes less than or equal to a page, wherein the storage logic is configured to (a) split each of said large mip maps into a first portion and a second portion, (b) store the first portions of any two consecutive large mip maps into distinct memory banks of said texture memory, (c) store the second portions of any two consecutive large mip maps into distinct memory banks of said texture memory, (d) store small mip maps, after a first small mip map in said series, into a first memory bank of said texture memory. - View Dependent Claims (15, 16, 17, 18, 19, 20)
-
-
21. A software program embodied on computer readable media comprising:
-
a first plurality of instructions configured to read a mip map from a series of mip maps, wherein successive mip maps in the series have successively smaller sizes;
a second plurality of instructions configured to classify each mip map of said series as large or small based on its size relative to a memory page size, and to divide each large mip map and a first small mip map of said series into a first portion and a second portion; and
a third plurality of instructions configured to (a) store the first portions of any two consecutive mip maps of the series up to the first small mip map into distinct memory banks of a multi-bank memory, (b) store the second portions of any two consecutive mip maps of the series up to the first small mip map into distinct memory banks of a multi-bank memory, (c) store the small mip maps, after the first small mip map in the series, in a first memory bank of the multi-bank memory.
-
-
22. A graphics subsystem comprising:
-
a multi-bank memory with at least two memory banks, wherein each of said memory banks comprises a plurality of memory pages;
storage logic for receiving and storing a series of mip maps, wherein successive mip maps of said series have successively smaller sizes, wherein each mip map of said series includes a first portion and a second portion, wherein the storage logic is coupled to said multi-bank memory and is configured to (a) classify the mip maps of said series as large or small based on their sizes with respect to a size limit, (b) store the first portions of any two consecutive large mip maps of said series in distinct memory banks of said multi-bank memory, (c) store the second portions of any two consecutive large mip maps of said series in distinct memory banks of said multi-bank memory, (d) store the first and second portions of small mip maps, after a first small mip map in said series, into a first memory bank of said multi-bank memory. - View Dependent Claims (23, 24, 25, 26, 27)
-
Specification