Up to this point, we've assumed that the texel data is available as a large contiguous image in system memory. Just as texture memory is a limited resource, it also makes sense to conserve system memory as well. For very large texture images, the image data can be divided into tiles, and paged into system memory. This paging can be kept separate from the paging going on from system memory to texture memory. The only difference will be in the offsets required to index the proper region in system memory to download, and increase the number of subloads required to update texture memory. A sophisticated system can wrap texture image data in system memory just as texture coordinates are wrapped in texture memory.
Consider the case of a two dimensional image roam, illustrated in Figure 35, in which the view is moving to the right. As the view pans to the right, new texture tiles must be added to the right edge of the current portion of the texture and old tiles could be discarded from the left edge.
Tiles discarded on the right side of the image create holes where new tiles could be loaded into the texture, but there is a problem with the texture coordinates.
The ability to load subregions within a texture has other uses besides these paging applications. Without this capability textures must be loaded in their entirety and their widths and heights must be powers of two. In the case of video data, the images are typically not powers of two so a texture of the nearest larger power of two can be created and only the relevant subregion needs to be loaded. When drawing geometry, the texture coordinates are simply constrained to the fraction of the texture which is occupied with valid data. Mipmapping can not easily be used with non-power-of-two image data since the coarser levels will contain image data from the invalid region of the texture.