Shader Buffer Identification for Graphics Rendering Optimization
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing rendering methods in graphics processing systems face inefficiencies due to high external memory bandwidth consumption, particularly in mobile devices, where the energy cost of reading data from external memory reduces battery life and generates heat.
Innovation Solution
The proposed method involves analyzing shaders in a graphics system to identify buffers sampled by the last shader that are to be written by a previous render. If these buffers are sampled using screen space coordinates corresponding to the current fragment location, the draw call is merged with the previous render, and the shader is recompiled to read from on-chip registers instead of external memory buffers.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If data is read from external memory buffers during rendering, then rendering operations can access previously rendered data, but external memory bandwidth consumption increases and power consumption rises
Solution Approach 1:
The patent merges the current render with the previous render by detecting that the current shader samples from buffers written by the previous shader. This merging allows the system to execute both renders together, eliminating the need to read data from external memory buffers and instead using on-chip memory, thereby reducing power consumption while maintaining access to previously rendered data
Solution Approach 2:
The system performs preliminary analysis of shader code to identify sampling operations on buffers written by previous renders. By detecting these dependencies before rendering execution, the system can proactively merge renders and recompile shaders to use on-chip memory, preventing external memory accesses and reducing power consumption before they occur
2Reliability
If data is read from external memory buffers during rendering, then rendering operations can access previously rendered data, but external memory bandwidth consumption increases
Solution Approach 1:
The patent merges the current render with the previous render by detecting that the current shader samples from buffers written by the previous shader. This merging allows the system to execute both renders together, eliminating the need to read data from external memory buffers and instead using on-chip memory, thereby reducing power consumption while maintaining access to previously rendered data
Solution Approach 2:
The system performs preliminary analysis of shader code to identify sampling operations on buffers written by previous renders. By detecting these dependencies before rendering execution, the system can proactively merge renders and recompile shaders to use on-chip memory, preventing external memory accesses and reducing power consumption before they occur
3Use of energy by moving object
If shaders are recompiled to read from on-chip registers instead of external memory buffers, then power consumption decreases, but system complexity increases
Solution Approach 1:
The system performs preliminary analysis of shader code to identify sampling operations on buffers written by previous renders. By detecting these dependencies before rendering execution, the system can proactively merge renders and recompile shaders to use on-chip memory, preventing external memory accesses and reducing power consumption before they occur
Solution Approach 2:
The patent introduces an intermediary analysis layer that examines shader code to detect buffer sampling operations. This intermediary layer identifies opportunities for render merging and shader recompilation, acting as a mediator between the shader compilation process and the rendering execution, thereby managing the complexity of determining when and how to recompile shaders while achieving power consumption reductions
Data Source
AI summary
Methods of rendering a scene in a graphics system identify a draw call within a current render and analyse the last shader in the series of shaders used by the draw call to identify any buffers that are sampled by the last shader and that are to be written by a previous render that has not yet been sent for execution on the GPU. If any such buffers are identified, further analysis is performed to determine whether the last shader samples from the identified buffers using screen space coordinates that correspond to a current fragment location and if this determination is positive, the draw call is added to data relating to the previous render and the last shader is recompiled to replace an instruction that reads data from an identified buffer with an instruction that reads data from an on-chip register.


