Rasterizer Patch Subdivision and Edge Test Skipping
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Current graphics processing systems face inefficiencies in rasterization, particularly in determining whether sampling points are covered by primitives and handling overlapping fragments, leading to suboptimal rendering performance.
Innovation Solution
The method involves subdividing larger patches into smaller ones and testing each smaller patch against the primitive edges, generating graphics fragments for covered patches, and using state information to skip unnecessary edge tests, thereby optimizing the rasterization process.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Measurement precision
If traditional rasterisation testing is performed for each sampling point against primitive edges, then complete coverage determination is achieved, but processing time and computational overhead increase significantly
Solution Approach 1:
The render output area is divided into hierarchical patches (first-level patches subdivided into second-level patches, and further into third-level patches). This segmentation allows the rasteriser to test larger patches first and only subdivide patches that are partially covered by primitives, significantly reducing the total number of edge tests required compared to testing each sampling point individually.
Solution Approach 2:
The patent performs preliminary testing of larger patches before subdividing them into smaller ones. By testing first-level patches against primitive edges initially, the system can identify and discard fully covered or non-covered patches before performing more detailed tests on smaller patches, thereby performing necessary actions in advance and avoiding redundant computations.
2Manufacturing precision
If all patches are subdivided and tested against primitive edges, then accurate fragment generation is achieved, but device complexity and computational resources increase
Solution Approach 1:
The patent implements a hierarchical patch subdivision system where patches are divided into multiple levels (first-level, second-level, third-level patches). This segmentation enables the system to maintain accurate fragment generation by only subdividing patches that require further testing, rather than uniformly subdividing all patches, thus reducing overall computational complexity.
Solution Approach 2:
The patent applies partial subdivision only to patches that are partially covered by primitives, rather than subdividing all patches uniformly. This selective approach maintains the necessary precision for accurate fragment generation while avoiding the excessive computational overhead of processing all patches at the finest level of detail.
3Reliability
If redundant edge tests are performed on fully covered patches, then thorough testing is maintained, but processing efficiency decreases
Solution Approach 1:
The patent performs preliminary testing of larger patches to determine if they are fully covered by primitives. When a patch is determined to be fully covered, the system records this information and skips redundant edge tests on subdivided patches, thereby maintaining testing thoroughness for uncertain cases while eliminating redundant tests to improve processing efficiency.
Solution Approach 2:
The patent copies and reuses testing results from parent patches to child patches. When a first-level patch is determined to be fully covered, this coverage information is copied to its second-level and third-level subdivisions, eliminating the need to perform the same edge tests repeatedly and thereby maintaining reliability while improving productivity.
Data Source
AI summary
A rasterizer and a method of performing rasterization in a graphics processing pipeline are disclosed. A rasterizer of a graphics processing pipeline tests larger patches of a render output to be generated against a primitive to be rasterized, to determine if the primitive covers (at least in part) any smaller patches of the render output that the larger patch encompasses. The larger patch is then sub-divided into any covered smaller patches, and the process repeated. The rasterizer also identifies when a given smaller patch of the render output is found to entirely pass the edge test for an edge of the primitive in question when the larger patch encompassing that smaller patch is tested, notes that event in state information associated with the primitive edge in question, and then uses that state information to skip the testing of the edge in question against the smaller patch of the render output.


