Conditional Vertex Attribute Memory Allocation in Tile-Based Graphics

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In tile-based graphics processing pipelines, there is a need to efficiently allocate memory for vertex shaded attribute data to avoid redundant allocation and optimize memory usage, as not all vertices are required for generating the output, leading to inefficient memory management.

Innovation Solution

A method where memory space for vertex shaded attribute data is allocated conditionally and on demand, using vertex shaded data to determine which vertices require memory allocation, thereby reducing unnecessary memory allocation for unused vertices.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If memory space is allocated for all vertices in advance, then memory allocation is simple and fast, but memory usage becomes inefficient and redundant

Engineering Contradiction:
Improvememory allocation speedVSAvoidmemory usage
Core Design Contradiction:
ProductivityVSQuantity of substance

Solution Approach 1:

The patent performs a preliminary vertex shading operation to generate vertex shaded attribute data before the main rendering process. This preliminary action identifies which vertices are actually needed for the current draw call, enabling subsequent memory allocation to be targeted only at those vertices rather than all vertices in the buffer, thus resolving the contradiction between allocation speed and memory efficiency

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent implements differential memory allocation where different vertices receive different treatment based on their actual usage. Vertices that are needed for the current rendering receive memory allocation, while vertices that are not needed do not receive allocation. This local differentiation resolves the contradiction by optimizing memory usage without significantly impacting allocation speed for the necessary vertices

Inventive Principle:
Principle #3Local quality

2Quantity of substance

If memory space is allocated only for needed vertices, then memory usage is optimized, but memory allocation complexity increases

Engineering Contradiction:
Improvememory usageVSAvoidmemory allocation complexity
Core Design Contradiction:
Quantity of substanceVSDevice complexity

Solution Approach 1:

The patent uses a preliminary vertex shading pass to pre-identify which vertices are needed before the main rendering process. This preliminary action simplifies the subsequent memory allocation process by providing a ready-made list of required vertices, reducing the complexity that would otherwise arise from needing to determine vertex requirements on-the-fly during rendering

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent introduces an intermediary data structure (the vertex shaded attribute data generated in the preliminary operation) that serves as a mediator between the vertex buffer and the rendering engine. This intermediary contains the information needed to determine which vertices require memory allocation, thereby reducing the complexity of the memory allocation logic by offloading the analysis work to the preliminary shading operation

Inventive Principle:
Principle #24Intermediary (Mediator)

3Reliability

If all vertex attributes are processed through vertex shading, then rendering quality is maintained, but processing time increases for unused vertices

Engineering Contradiction:
Improverendering qualityVSAvoidvertex processing time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent extracts only the necessary vertex attributes through the preliminary vertex shading operation. By performing vertex shading selectively on a preliminary basis and using that information to identify needed vertices, the system avoids processing all vertex attributes for all vertices through the complete rendering pipeline, thus reducing processing time for unused vertices while maintaining rendering quality for the vertices that are actually rendered

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The patent performs a partial vertex shading operation in the preliminary pass, shading only enough attributes to determine vertex visibility and requirements. This partial action is sufficient to identify which vertices need full processing, allowing the system to avoid excessive processing of attributes for vertices that will not be rendered, thereby reducing overall processing time while maintaining the quality of rendering for necessary vertices

Inventive Principle:
Principle #16Partial or excessive action

Data Source

PatentUS10650580B2Graphics processing
Publication Date: 2020.05.12 ARM LTD
  • US10650580B2 patent drawing
  • US10650580B2 patent drawing
  • US10650580B2 patent drawing

AI summary

A graphics processing pipeline includes: a position shader, a tiler, a pool of memory for storing primitive lists and vertex shaded attributes data for vertices, a varying-only vertex shader, and a fragment frontend and shader. The position shader performs vertex shading for the positional attributes of the vertices of a set of vertices to be processed by the graphics processing pipeline. The tiler uses the vertex shaded position data to identify primitives that should be processed further to generate the render output. When the tiler determines that a vertex should be processed further to generate the render output, it allocates memory space in the memory pool for storing vertex shaded attributes data for the vertex. Vertex shaded attributes data for the vertex is then stored in the allocated space in the memory pool for later use, e.g., by the fragment frontend and shader.