Spatial Primitive Block Allocation to Reduce GPU Memory Fetches

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing graphics processing systems face inefficiencies in rendering 3D scenes due to the sequential ordering of primitives, which affects the performance of hidden surface removal and texturing/shading modules, particularly when primitives are widely distributed over the rendering space.

Innovation Solution

A method and module for allocating primitives to primitive blocks based on their spatial positions, maintaining sequence order for overlapping primitives while allowing flexibility for non-overlapping ones, thereby improving cache coherency and reducing data transfer between GPU and memory.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Stability of the object's composition

If primitives are placed into primitive blocks in sequence order without alteration, then the sequence order of incoming primitives is maintained, but primitives widely distributed over the rendering space are grouped together, reducing cache coherency and increasing data transfer between GPU and memory

Engineering Contradiction:
Improvesequence order of primitivesVSAvoiddata transfer between GPU and memory
Core Design Contradiction:
Stability of the object's compositionVSLoss of energy

Solution Approach 1:

The patent segments the sequence of primitives into multiple primitive blocks based on spatial position criteria. Instead of maintaining a single sequential order, the system divides primitives into groups that share similar spatial characteristics, allowing each block to be processed more efficiently while maintaining overall rendering correctness through proper ordering of the blocks themselves.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent applies different ordering criteria to different regions of the rendering space. Primitives are sorted and grouped according to their local spatial position, creating primitive blocks that are optimized for their specific spatial region. This local optimization improves cache coherency for primitives that are spatially close together, even if they appear far apart in the original sequence.

Inventive Principle:
Principle #3Local quality

2Device complexity

If primitives widely distributed over the rendering space are placed into the same primitive block, then the number of primitive blocks is reduced, but cache coherency deteriorates and data transfer efficiency decreases

Engineering Contradiction:
Improvenumber of primitive blocksVSAvoidrendering speed
Core Design Contradiction:
Device complexityVSProductivity

Solution Approach 1:

The patent changes the parameter used for grouping primitives from sequential order to spatial position. By using spatial coordinates as the primary sorting criterion, the system creates primitive blocks that group primitives based on their location in the rendering space rather than their arrival order. This parameter change optimizes cache utilization and data access patterns during rendering operations.

Inventive Principle:
Principle #35Parameter changes

3Quantity of substance

If the number of vertices in each primitive block is limited, then vertex index data storage cost is reduced, but more primitive blocks need to be created and managed

Engineering Contradiction:
Improvevertex index data storageVSAvoidprimitive block management
Core Design Contradiction:
Quantity of substanceVSDevice complexity

Solution Approach 1:

The patent performs preliminary sorting and grouping of primitives by spatial position before they are divided into primitive blocks with vertex limits. This preliminary spatial organization ensures that when primitives are split into multiple blocks due to vertex limits, primitives that are spatially close remain grouped together in the same block or adjacent blocks, maintaining cache coherency despite the increased number of blocks.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS12462464B2Allocation of primitives to primitive blocks
Publication Date: 2025.11.04 IMAGINATION TECH LTD
  • US12462464B2 patent drawing
  • US12462464B2 patent drawing
  • US12462464B2 patent drawing

AI summary

An application sends primitives to a graphics processing system so that an image of a 3D scene can be rendered. The primitives are placed into primitive blocks for storage and retrieval from a parameter memory. Rather than simply placing the first primitives into a primitive block until the primitive block is full and then placing further primitives into the next primitive block, multiple primitive blocks can be “open” such that a primitive block allocation module can allocate primitives to one of the open primitive blocks to thereby sort the primitives into primitive blocks according to their spatial positions. By grouping primitives together into primitive blocks in accordance with their spatial positions, the performance of a rasterization module can be improved. For example, in a tile-based rendering system this may mean that fewer primitive blocks need to be fetched by a hidden surface removal module in order to process a tile.