Tile Coarse Depth Testing for Lower Depth Buffer Bandwidth
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Tile-based rendering (TBR) graphics processing systems face inefficiencies due to high bandwidth requirements for transferring transformed geometry data between the chip and off-chip memory, and frequent reads and writes to the depth buffer during the rasterization phase, which can be costly in terms of time and resources.
Innovation Solution
Implement a hybrid rendering technique that combines TBR with immediate mode rendering, using partial display lists and on-chip memory for transformed primitives, and incorporate coarse depth test logic to reduce the number of depth buffer reads and writes by performing coarse depth testing before full resolution hidden surface removal.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Loss of energy
If tile-based rendering is used to reduce memory bandwidth requirements, then off-chip memory bandwidth is reduced, but frequent reads and writes to the depth buffer during rasterization still consume significant time and resources
Solution Approach 1:
The patent performs a coarse depth test on primitives before full rasterization to preliminarily identify and discard hidden primitives. This preliminary action reduces the number of primitives that require subsequent depth buffer reads and writes during the rasterization phase, thereby reducing the time and resources spent on depth buffer operations while maintaining the memory bandwidth benefits of tile-based rendering
2Manufacturing precision
If all primitives are processed through full resolution hidden surface removal, then rendering accuracy is maintained, but processing time increases due to unnecessary depth testing on hidden primitives
Solution Approach 1:
The patent segments the depth testing process into two stages: a coarse depth test stage that quickly identifies hidden primitives, and a fine depth test stage that performs full resolution hidden surface removal only on visible primitives. This segmentation allows the system to maintain rendering accuracy for visible primitives while significantly improving rendering throughput by eliminating unnecessary processing of hidden primitives
Solution Approach 2:
The patent applies partial action by performing only a coarse depth test initially rather than the full resolution depth test on all primitives. This partial testing approach allows the system to quickly filter out hidden primitives with minimal processing, then apply the complete depth testing process only to the subset of primitives that are likely to be visible, thereby improving overall rendering productivity
Data Source
Figure 1
Figure 2
Figure 3
AI summary
Methods and coarse depth test logic for performing coarse depth testing in a graphics processing system in which a rendering space is divided into a plurality of tiles. The method comprises: receiving a set of one or more primitives related to one of the plurality of tiles; obtaining a depth range for the tile, the depth range for the tile identifying a depth range based on primitives previously processed for the tile; and for at least one primitive in the set of one or more primitives: making a determination, based on the depth range for the tile, as to whether all or a portion of the primitive is hidden in the tile; in response to making a determination that at least a portion of the primitive is not hidden in the tile, making a determination, based on the depth range for the tile, as to whether the primitive, or one or more primitive fragments generated therefrom, has better depth than the primitives previously processed for the tile according to a depth compare mode; and in response to making a determination that the primitive or a primitive fragment has better depth than the primitives previously processed for the tile, identifying the primitive or the primitive fragment as not requiring a read of a depth buffer to perform full resolution depth testing, wherein if a determination is made that at least a portion of the primitive is hidden in the tile, full resolution depth testing is not performed on at least that portion of the primitive in respect of the tile.