Graphics Processing Memory Allocation via Segmented Blocks

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Tile-based graphics processing pipelines face inefficiencies in memory allocation for vertex shaded data, particularly in deferred rendering, where storing geometry data for later use can lead to memory management complexities and potential shortages, especially when the memory requirements are difficult to predict.

Innovation Solution

The implementation of a memory allocation system that uses a collection of independent blocks of memory space, or 'chunks', which can be dynamically adjusted and reused, allowing for more flexible and efficient memory management by allocating and reallocating memory space as needed, rather than relying on a single contiguous pool.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Device complexity

If a single contiguous pool of memory space is used for storing vertex shaded data, then memory allocation is simple, but memory management becomes complex and memory shortages occur when requirements are difficult to predict

Engineering Contradiction:
Improvememory allocation complexityVSAvoidmemory availability
Core Design Contradiction:
Device complexityVSReliability

Solution Approach 1:

The patent divides the memory space into multiple independent blocks (chunks) instead of using a single contiguous pool. Each block can be independently allocated and deallocated, allowing flexible memory management that adapts to varying vertex data storage requirements without causing memory shortages or excessive complexity.

Inventive Principle:
Principle #1Segmentation

2Reliability

If memory space is allocated for all possible vertices, then sufficient memory is always available, but memory footprint increases and processing requirements grow

Engineering Contradiction:
Improvememory availabilityVSAvoidmemory footprint
Core Design Contradiction:
ReliabilityVSQuantity of substance

Solution Approach 1:

The patent implements dynamic memory allocation where blocks are allocated and deallocated based on actual vertex processing needs rather than reserving all possible memory space in advance. This allows the system to adapt memory usage to current requirements, maintaining availability when needed while reducing footprint when not required.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The system changes the allocation parameter from static (pre-allocated for all vertices) to dynamic (allocated based on actual vertex count and requirements). This enables the memory footprint to adjust according to the number of vertices being processed, optimizing both availability and efficiency.

Inventive Principle:
Principle #35Parameter changes

3Speed

If memory blocks are statically allocated, then allocation is fast, but flexibility to handle varying requirements is reduced

Engineering Contradiction:
Improveallocation speedVSAvoidmemory flexibility
Core Design Contradiction:
SpeedVSAdaptability or versatility

Solution Approach 1:

The patent pre-allocates a set of memory blocks that can be reused across different rendering contexts. This preliminary preparation allows fast allocation through simple block selection rather than dynamic allocation, while the blocks remain flexible enough to handle varying vertex requirements through reuse and deallocation mechanisms.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS11734869B2Graphics processing
Publication Date: 2023.08.22 ARM LTD
  • US11734869B2 patent drawing
  • US11734869B2 patent drawing
  • US11734869B2 patent drawing

AI summary

A method of operating a graphics processor that executes a graphics processing pipeline comprising a vertex shading stage is disclosed. A set of blocks of memory space that may be represented by a linked list is provided and memory space for storing vertex shaded attribute data generated by the vertex shading stage is allocated from one of the blocks of memory space in the set of blocks of memory space. When data stored in a block of memory space is no longer needed by the graphics processing pipeline, the block can be “recycled” for use by the pipeline.