Some GPUs support tile-based rendering. Such GPUs may have a fast on-chip memory smaller than the memory used for storing the rendered content (i.e., the image plane), and this on-chip memory may be used to perform certain GPU operations more quickly. Accordingly, in tile-based rendering, content may be rendered in portions, referred to as tiles, such that the GPU may perform operations on each such portion by using the fast memory as part of the rendering process . The content may be rendered one tile at a time, with pixel values being calculated on a per-tile basis. The memory region storing pixel values may be organized as multiple tiles.
Improved content rendering techniques may improve utilization of resources, such as power and memory, in a computing device containing specialized graphics hardware. Techniques include more efficient tile-based rendering of content comprising multiple content layers by optimizing the order in which operations in the rendering process may be performed. Specialized hardware for content rendering, such as a GPU, may be configured to render more than one content layer corresponding to a tile before performing rendering of content corresponding to other tiles. As a result, the number of times pixel values associated with that single tile are brought into memory may be reduced. This may make the overall rendering process more efficient than a conventional approach of rendering the content one content layer at a time, each content layer organized as multiple tiles, which leads to cache thrashing and poor overall performance. A more efficient rendering process may lead to reduced or improved utilization of resources, such as power and memory, which may be beneficial for computing devices (e.g., laptops, mobile phones, devices having a slate form factor, other battery-powered devices, etc.) where such resources are limited.
The inventors have recognized and appreciated that greater utility can be derived from a GPU that supports tile-based rendering if the GPU may be configured to perform, more efficiently, tile-based rendering of content that comprises one or more content layers. In particular, the inventors have recognized that it may be advantageous to render such content one tile at a time, rather than render the content one layer at a time. In the former "layer-then-tile" approach, the content may be rendered one content layer at a time, and each such content layer may be rendered, one tile at a time. On the other hand, in the latter "tile-then-layer" approach, the content may be rendered one tile at a time calculating pixel values associated with each tile may comprise calculating pixel values from multiple content layers.
For example, commands and/or parameters 238 may configure the GPU to perform tile-based rendering using tiles of a particular size. As another example, commands and/or parameters 238 may configure the GPU to perform tile-based rendering of content, which comprises multiple layers, using one of the "layer-before-tile" approach or the "tile-before layer" approach, as previously described above.
It should be recognized that process 300 is illustrative and that many variations of process 300 are possible. For example, in the illustrated embodiment, content to be rendered comprises two content layers. However, this is not a limitation of the present invention as the content may comprise any suitable number of content layers. Accordingly, process 300 may be modified to render any suitable number of content layers (e.g., at least three layers, at least four layers, etc.).