Graphics Primitive Blocks with Shared State Data for SIMD Rasterization

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing graphics processing systems face inefficiencies in storing primitives due to reduced memory capacity and increased bandwidth requirements, particularly in tile-based rendering, leading to suboptimal use of silicon area and incomplete filling of SIMD lanes during rasterization.

Innovation Solution

Implementing a primitive block structure with a single state data section and multiple primitive sections, allowing efficient storage and compression of transformed geometry data, while optimizing for hardware limitations and enabling better utilization of SIMD processors.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Quantity of substance

If a single state data section is shared across multiple primitive sections, then memory efficiency is improved and bandwidth requirements are reduced, but the complexity of data structure management increases

Engineering Contradiction:
Improvememory efficiencyVSAvoiddata structure complexity
Core Design Contradiction:
Quantity of substanceVSDevice complexity

Solution Approach 1:

The patent segments the primitive data structure into multiple primitive sections that can share a single state data section. Each primitive section contains only the geometry data necessary for that specific primitive, while the shared state data section contains rendering state information that is common across multiple primitives. This segmentation reduces redundant data storage and improves memory efficiency while maintaining manageable complexity through a clear hierarchical structure.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The state data section is designed to be universal and shared across multiple primitive sections. Instead of duplicating state data for each primitive, the same state data section serves multiple primitives that share common rendering parameters. This multi-functionality approach significantly reduces memory bandwidth requirements while the patent manages the resulting complexity through structured access patterns and clear data organization.

Inventive Principle:
Principle #6Universality (Multi-functionality)

2Loss of energy

If more primitives are stored in a single primitive block, then memory bandwidth is reduced, but the difficulty of managing diverse state data increases

Engineering Contradiction:
Improvememory bandwidthVSAvoidstate data management
Core Design Contradiction:
Loss of energyVSDevice complexity

Solution Approach 1:

The patent segments the primitive block into multiple primitive sections, each capable of sharing the same state data section. This allows more primitives to be stored in a single block while reducing memory bandwidth requirements, as the state data is not repeated for each primitive. The segmentation approach manages state data complexity by organizing primitives into sections that can efficiently reference shared state information.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent merges multiple primitives that share common state data into a single primitive block with a shared state data section. By combining primitives with identical or similar rendering states into the same block, the system reduces overall memory bandwidth consumption. The complexity of managing diverse state data is handled through the structured primitive section organization, which groups primitives by their state data requirements.

Inventive Principle:
Principle #5Merging (Combining)

3Productivity

If primitives are reorganized into sections within a primitive block, then SIMD lane utilization is improved, but the processing complexity increases

Engineering Contradiction:
Improverasterization performanceVSAvoidprocessing complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent segments each primitive block into multiple primitive sections, where each section can be independently processed. This segmentation aligns with SIMD (Single Instruction Multiple Data) processing architectures, allowing efficient utilization of SIMD lanes by processing multiple primitives within a section simultaneously. The reorganization improves rasterization performance through better parallel processing while managing complexity through a systematic section-based structure that facilitates efficient access patterns.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces dynamic reorganization of primitives into sections based on their state data characteristics and geometric properties. This dynamic organization allows the system to optimize for SIMD processing by grouping primitives that can be efficiently processed together, while maintaining flexibility to adapt to different rendering scenarios. The processing complexity is managed through algorithms that automatically organize primitives into optimal sections without requiring manual intervention.

Inventive Principle:
Principle #15Dynamics

Data Source

PatentUS20250299415A1Data Structures, Methods and Primitive Block Generators for Storing Primitives in a Graphics Processing System
Publication Date: 2025.09.25 YANG XILE
  • US20250299415A1 patent drawing
  • US20250299415A1 patent drawing
  • US20250299415A1 patent drawing

AI summary

Data structures, methods and primitive block generators for storing primitives in a graphics processing system. A primitive is added to a primitive block based on at least state data associated with the primitive, the primitive block comprising two or more primitive sections and a state data section, wherein each primitive section comprises data for one or more primitives and has one or more size constraints and wherein each primitive section comprises a primitive data sub-section and a vertex data sub-section, and wherein the state data section comprises information identifying state data common to the one or more primitives for which data is stored in the two or more primitive sections. The primitive block is then stored in memory.