Fixed Length Control Stream for Graphics Tiling
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing tile-based rendering (TBR) graphics processing systems face inefficiencies in memory bandwidth and data storage due to the variable length of primitive block entries in the control stream, leading to increased processing time and memory usage.
Innovation Solution
The proposed solution involves storing variable length control data separately from the control stream, with each primitive block entry having a fixed length. This includes a valid tile mask and a data pointer identifying the location of the corresponding control data block, allowing for efficient storage and retrieval of relevant data.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Quantity of substance
If variable length control data is stored in the control stream, then all necessary information is included in a single structure, but the control stream cannot be packed densely and memory bandwidth increases
Solution Approach 1:
The control data is segmented into two separate components: a fixed-length control stream containing only essential information (valid tile mask and data pointer), and a separate variable-length control data block containing detailed primitive information. This segmentation allows the control stream to be packed densely while detailed data is stored separately only when needed.
Solution Approach 2:
The variable-length control data is extracted from the control stream and stored separately in memory. The control stream retains only the fixed-length entries with valid tile masks and data pointers, eliminating the variable length component that prevented dense packing and increased memory bandwidth requirements.
2Productivity
If variable length control data is stored in the control stream, then complete primitive information is available, but processing time increases due to inability to skip invalid entries efficiently
Solution Approach 1:
The variable-length control data is extracted from the control stream, allowing the rasterization logic to process only the fixed-length control stream entries. This enables efficient skipping of invalid entries through the compact fixed-length structure while detailed primitive information is retrieved only when needed from the separate control data blocks.
Solution Approach 2:
The control stream is pre-processed to include only valid tile information and data pointers in a compact format. This preliminary organization allows the rasterization logic to quickly identify and skip invalid entries without processing unnecessary variable-length data, significantly reducing processing time.
3Quantity of substance
If fixed length control stream entries are used, then memory packing density increases, but variable length control data must be stored separately
Solution Approach 1:
The control data structure is segmented into a fixed-length control stream for memory efficiency and a separate variable-length control data block for detailed information storage. This segmentation resolves the contradiction by allowing compact memory packing while maintaining access to complete primitive information through the separate data block.
Solution Approach 2:
A data pointer acts as an intermediary element in the fixed-length control stream entry, providing a reference to the separate control data block. This intermediary allows the fixed-length control stream to maintain memory packing density while enabling access to variable-length control data through the pointer reference.
Data Source
AI summary
A control stream decoder decodes a control stream for a tile group comprising at least two tiles of a rendering space. A primitive block entry analyser received a primitive block entry of the control stream and identifies a location in memory of a control data block for a corresponding primitive block. For the received primitive block entry, in response to determining that a current tile is a valid tile for the corresponding primitive block, the control data block for the corresponding primitive block is retrieved from the identified location in memory. An address of the corresponding primitive block in memory is identified from the control data block and primitives of that primitive block relevant for rendering the current tile, and information identifying the address of the corresponding primitive block and the primitives of that primitive block relevant for rendering the current tile is outputted.


