Vertex Shader Bandwidth Reduction via Constant Color Partitioning

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current content display devices face challenges in maintaining smooth and uninterrupted animation due to limited graphics processing resources and power constraints, leading to inefficiencies in rendering large areas of constant color, which consume equal processing resources as complex areas.

Innovation Solution

The method involves dividing a texture tile into partitions, creating a constant color map, and using a vertex shader to associate texel coordinates with vertices, setting the first coordinate to zero, and interpolating these coordinates to reduce memory bandwidth by fetching colors from a single location for multiple pixels.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If traditional rendering methods are used to handle constant color areas, then processing is performed uniformly across all areas, but memory bandwidth consumption increases and power usage rises

Engineering Contradiction:
Improverendering efficiencyVSAvoidpower consumption
Core Design Contradiction:
ProductivityVSUse of energy by moving object

Solution Approach 1:

The texture tile is divided into multiple partitions, and a partition of interest is identified based on whether it contains constant color areas. This segmentation allows the rendering system to apply different processing strategies to different partitions, specifically optimizing for constant color areas to reduce memory bandwidth consumption and power usage while maintaining rendering efficiency for complex areas.

Inventive Principle:
Principle #1Segmentation

2Use of energy by moving object

If memory bandwidth is reduced by fetching colors from a single location, then power usage decreases, but processing complexity increases

Engineering Contradiction:
Improvepower consumptionVSAvoidprocessing complexity
Core Design Contradiction:
Use of energy by moving objectVSDevice complexity

Solution Approach 1:

The system performs preliminary analysis to identify constant color partitions before rendering. By pre-determining which partitions contain constant color areas and setting the first coordinate to zero for these partitions, the system prepares the data structure in advance to enable efficient single-location color fetching, reducing power consumption during the actual rendering phase.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

Different processing approaches are applied to different partitions based on their content characteristics. Constant color partitions use the optimized single-location fetching method with coordinate setting, while non-constant color partitions use traditional rendering methods. This local differentiation reduces overall power consumption without significantly increasing processing complexity.

Inventive Principle:
Principle #3Local quality

Data Source

PatentUS9811940B2Bandwidth reduction using vertex shader
Publication Date: 2017.11.07 QUALCOMM INNOVATION CENTER INC
  • US9811940B2 patent drawing
  • US9811940B2 patent drawing
  • US9811940B2 patent drawing

AI summary

In graphics rendering, a texture tile is divided into a plurality of partitions, each partition having a plurality of vertices. A map indicates, for each partition, whether each partition comprises a constant color. Then the plurality of vertices are transferred to a vertex shader, which determines that at least one of the partitions comprises a constant color partition. A vertex shader applies a vertex transformation that associates a set of texel coordinates from the texture tile to each of the vertices of the constant color partition to generate a set of associated texel coordinates. A first coordinate of the set of associated texel coordinates is set to zero. A pixel shader interpolates the associated texel coordinates to generate an interpolated value and accesses a single texel in the constant color partition that corresponds to the interpolated value.