Graphics Pipeline Shader Throttling for Buffer-Driven Resource Balancing
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Graphics processing units (GPUs) face performance issues due to static limits on compute units, leading to resource monopolization by geometry shaders, which deprive pixel shaders of necessary resources, resulting in reduced performance during draw calls requiring larger numbers of compute units.
Innovation Solution
Implementing a graphics pipeline with a primitive hub that monitors buffer fullness and resource usage to selectively throttle geometry shader waves based on feedback signals, using a stall counter to manage resource allocation and balance between geometry and pixel shaders.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Device complexity
If static limits on compute units are implemented, then resource allocation is simplified, but geometry shaders can monopolize resources and deprive pixel shaders of necessary resources
Solution Approach 1:
The patent implements dynamic throttling of geometry shader wave launches based on real-time monitoring of pipeline buffer fullness and resource usage. The system transitions from static compute unit limits to dynamic control where the throttling mechanism adjusts geometry shader execution based on current pipeline state, allowing pixel shaders to receive adequate resources when needed while maintaining high throughput when resources are available.
Solution Approach 2:
The patent employs feedback mechanisms where the primitive hub monitors buffer fullness and resource consumption, then provides feedback signals to throttle geometry shader wave launches accordingly. This closed-loop control ensures that resource allocation responds to actual pipeline conditions, preventing geometry shaders from monopolizing resources while maintaining optimal performance.
2Productivity
If geometry shaders launch more waves to increase processing throughput, then geometry processing speed improves, but pixel shaders experience resource starvation
Solution Approach 1:
The patent introduces a primitive hub as an intermediary between geometry shaders and the rest of the pipeline. This hub monitors resource usage and buffer fullness, then mediates wave launch decisions by throttling geometry shader execution when pixel shaders need resources. The intermediary balances resource distribution without directly controlling either shader type, ensuring both can operate effectively.
Solution Approach 2:
The patent applies preliminary anti-action by proactively throttling geometry shader wave launches before pixel shaders experience resource starvation. The system monitors pipeline state and preemptively reduces geometry shader throughput when buffers are filling up or pixel shader resources are becoming constrained, preventing the harmful effect before it occurs.
3Power
If compute unit allocation is increased for draw calls requiring more resources, then processing capability improves, but resource monopolization by geometry shaders worsens
Solution Approach 1:
The patent changes the parameter of compute unit allocation from fixed to variable based on pipeline conditions. The system dynamically adjusts the number of compute units available to geometry shaders based on buffer fullness, pixel shader resource usage, and overall pipeline state. This allows the system to utilize high compute unit capacity when needed while automatically reducing allocation when monopolization risks arise.
Data Source
Figure 1
Figure 2
Figure 3
AI summary
A processing system [100] includes a graphics pipeline [200] that executes a first shader of a first type [226] and a second shader [234] of a second type. In some cases, the first shader is a geometry shader and the second shader is a pixel shader. The processing system also includes buffers [415] that hold primitives generated by the first shader and provide the primitives to the second shader. The processing system also includes a primitive hub [325] that monitors fullness of the buffers. Launching of waves from the first shader is throttled based on the fullness of the buffers. A shader processor input (SPI) [303] selectively throttles the waves launched by the geometry shader based on a signal from the primitive hub indicating the fullness, an indication of relative resource usage of geometry waves and pixel waves in the graphics pipeline, or an indication of lifetimes of the geometry waves.