Primitive Block Allocation for Spatially Sorted 3D Rasterization
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing graphics processing systems inefficiently manage the allocation of primitives due to non-spatial ordering, leading to increased data transfer and processing overheads, particularly in tile-based rendering systems.
Innovation Solution
A method and module for allocating primitives to primitive blocks based on their spatial positions, maintaining sequence order for overlapping primitives while allowing flexibility for non-overlapping ones, thereby optimizing data storage and retrieval.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If primitives are allocated to primitive blocks without spatial ordering, then sequence order is maintained and implementation is simple, but data transfer overhead increases and processing efficiency decreases
Solution Approach 1:
The patent segments the rendering space into tiles and organizes primitives into primitive blocks based on spatial coherence within each tile. This segmentation allows the system to maintain sequence order for overlapping primitives while grouping spatially adjacent primitives together, reducing data transfer overhead by approximately 10% compared to unsorted allocation methods.
Solution Approach 2:
The patent applies different allocation strategies to different regions (tiles) of the rendering space. Within each tile, primitives are sorted by spatial position to improve local processing efficiency, while maintaining sequence order for overlapping primitives across tile boundaries. This local optimization resolves the contradiction between overall sequence preservation and local processing efficiency.
2Loss of energy
If primitives are sorted by spatial position, then data transfer is reduced and processing is optimized, but sequence order may be altered and implementation complexity increases
Solution Approach 1:
The patent divides the rendering space into discrete tiles, which simplifies the allocation logic by confining spatial sorting operations to local regions rather than the entire scene. This segmentation reduces implementation complexity while still achieving significant data transfer reductions through spatial coherence within each tile.
Solution Approach 2:
The patent performs spatial sorting of primitives into primitive blocks before the actual rendering process. This preliminary organization of data by spatial position enables more efficient data transfer and processing during rendering, while the sequence order is preserved through careful handling of overlapping primitives that span multiple tiles.
3Ease of operation
If all primitives are placed in sequence order, then implementation is straightforward, but primitives in different spatial regions are mixed causing increased data transfer
Solution Approach 1:
The patent segments the primitive sequence into multiple primitive blocks based on spatial coherence within tiles. This segmentation allows the system to maintain simplicity in implementation by processing primitives in localized groups rather than handling the entire sequence at once, while significantly improving data retrieval efficiency by reducing the number of primitives that need to be transferred between memory and processing units.
Solution Approach 2:
The patent applies spatial sorting only within local tile regions while maintaining sequence order for primitives that overlap across tile boundaries. This localized approach preserves implementation simplicity by avoiding the need to completely reorder all primitives, while still achieving improved data retrieval efficiency through spatial coherence within each tile.
Data Source
AI summary
An application sends primitives to a graphics processing system so that an image of a 3D scene can be rendered. The primitives are placed into primitive blocks for storage and retrieval from a parameter memory. Rather than simply placing the first primitives into a primitive block until the primitive block is full and then placing further primitives into the next primitive block, multiple primitive blocks can be “open” such that a primitive block allocation module can allocate primitives to one of the open primitive blocks to thereby sort the primitives into primitive blocks according to their spatial positions. By grouping primitives together into primitive blocks in accordance with their spatial positions, the performance of a rasterization module can be improved. For example, in a tile-based rendering system this may mean that fewer primitive blocks need to be fetched by a hidden surface removal module in order to process a tile.


