Fragment Depth Testing for Shader-Dependent Rendering Stalls
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Graphics processing systems face performance degradation due to latency and reduced efficiency when processing a mix of punch-through and non-punch-through objects, as the rendering pipeline stalls while waiting for shader-dependent properties of punch-through fragments to be resolved.
Innovation Solution
Implement an early depth test followed by shader program execution for punch-through fragments, and a conservative early depth test for non-punch-through fragments, allowing simultaneous processing of both types without stalling, and a late depth test to confirm visibility.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Measurement precision
If the rendering pipeline waits for shader-dependent properties of punch-through fragments to be resolved before processing non-punch-through fragments, then processing accuracy is maintained, but processing speed and throughput deteriorate due to pipeline stalls
Solution Approach 1:
The patent performs an early depth test on punch-through fragments before shader execution to preliminarily determine which fragments can be discarded. This preliminary action allows non-punch-through fragments to be processed in parallel without waiting for complete shader resolution of punch-through fragments, maintaining accuracy while improving throughput.
Solution Approach 2:
The depth testing process is segmented into two stages: an early depth test performed before shader execution and a late depth test performed after. This segmentation allows different processing paths for punch-through and non-punch-through fragments, enabling parallel processing while maintaining correctness.
2Productivity
If the early depth test is performed conservatively for non-punch-through fragments, then processing throughput is improved by allowing parallel execution, but measurement precision may deteriorate due to false positive results
Solution Approach 1:
The patent applies a conservative early depth test that may produce false positives (fragments appearing to pass when they might fail). This excessive action in terms of conservatism ensures that no fragments are incorrectly discarded, allowing parallel processing of non-punch-through fragments while maintaining correctness through the conservative approach.
Solution Approach 2:
The conservative early depth test acts as an intermediary that provides a preliminary filter without making definitive decisions. It allows the pipeline to proceed with parallel processing while the conservative nature ensures that potential errors are avoided, mediating between the need for speed and accuracy.
3Device complexity
If shader programs are executed for all fragments before hidden surface removal, then processing simplicity is maintained, but energy consumption and processing time increase due to unnecessary shader execution on occluded fragments
Solution Approach 1:
The patent performs preliminary depth testing (early depth test) before executing shader programs. This preliminary action identifies and discards fragments that fail the depth test, preventing unnecessary shader execution on occluded fragments and reducing energy consumption while maintaining processing simplicity for surviving fragments.
Solution Approach 2:
The patent discards fragments that fail the early depth test before shader execution, avoiding wasted energy on processing that will not contribute to the final image. This selective discarding recovers energy resources by preventing unnecessary computation on occluded fragments.
Data Source
Figure 1
Figure 2a
Figure 2b
AI summary
Methods and graphics processing units are provided for processing a plurality of fragments a graphics processing system. The system comprises: (i) hidden surface removal logic, and (ii) processing logic configured to execute shader programs for fragments. A first fragment to be processed is received, wherein the first fragment has a shader-dependent property. The first fragment is processed by: performing an early depth test on the first fragment with the hidden surface removal logic using a depth buffer; in response to the first fragment passing the early depth test, executing one or more instructions of a shader program for the first fragment on the processing logic to determine the property of the first fragment; and after the determination of the property of the first fragment, performing a late depth test on the first fragment with the hidden surface removal logic using the depth buffer. After said receiving a first fragment, a second fragment to be processed is received, wherein the second fragment does not have a shader-dependent property. The second fragment is processed by, before said late depth test is performed on the first fragment, performing an early depth test on the second fragment with the hidden surface removal logic.