Mesh Shader Tile-Based Rendering Pipeline Memory Management

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current tile-based rendering (TBR) GPU silicon struggles to support mesh shaders due to the large amount of dynamic output data, leading to memory management issues and inefficiencies, particularly in allocating and deallocating memory, which increases hardware and firmware costs and reduces scalability.

Innovation Solution

Incorporating a mesh shader that outputs legacy mesh shader parameters along with an axis-aligned bounding box (AABB) structure, which is used by the tiler to generate a visibility stream indicating visibility in the view frustum, allowing for early primitive culling and reducing memory bandwidth usage by only rendering visible vertices and primitives.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If mesh shaders output huge amount of data at runtime, then the flexibility and programmability of the rendering pipeline is improved, but memory management complexity and hardware cost increase due to need for GPU memory management unit

Engineering Contradiction:
ImproveprogrammabilityVSAvoidmemory management complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent extracts the memory management function from the GPU to the host CPU. The host allocates memory for mesh shader outputs upfront based on maximum expected size, and provides this pre-allocated memory to the GPU. This removes the need for GPU-side memory management units while maintaining full mesh shader programmability and flexibility.

Inventive Principle:
Principle #2Taking out (Extraction)

2Ease of operation

If memory is allocated or deallocated by GPU, then runtime flexibility is improved, but hardware cost increases due to GPU memory management unit

Engineering Contradiction:
Improveruntime flexibilityVSAvoidhardware cost
Core Design Contradiction:
Ease of operationVSDevice complexity

Solution Approach 1:

The host performs preliminary memory allocation before GPU execution based on the maximum expected output size from mesh shaders. This pre-allocation approach maintains runtime flexibility for the GPU to write outputs without requiring complex GPU memory management hardware, as all memory is already reserved and managed by the host.

Inventive Principle:
Principle #10Preliminary action

3Adaptability or versatility

If mesh shaders are used with tile-based rendering, then rendering flexibility is improved, but memory bandwidth usage increases due to large output data

Engineering Contradiction:
Improverendering flexibilityVSAvoidmemory bandwidth usage
Core Design Contradiction:
Adaptability or versatilityVSLoss of energy

Solution Approach 1:

The patent extracts only the essential bounding box information from mesh shader outputs for tile-based rendering culling purposes. Instead of transferring all mesh shader output data to the tiler, only the compact AABB structures are sent for visibility testing, dramatically reducing memory bandwidth consumption while preserving full mesh shader functionality.

Inventive Principle:
Principle #2Taking out (Extraction)

Data Source

PatentUS20240346741A1Method and system of processing graphics data with tile-based rendering pipeline
Publication Date: 2024.10.17 MEDIATEK INC
  • US20240346741A1 patent drawing
  • US20240346741A1 patent drawing
  • US20240346741A1 patent drawing

AI summary

In aspects of the disclosure, a method, a system, and a computer-readable medium, are provided. The method for processing graphics data with a graphics rendering pipeline comprising a mesh shader and a tiler, comprising outputting, by the mesh shader in response to an input of the graphics data, legacy mesh shader output parameters including vertices and primitives, and additional data with a meshlet bounding-box, or axis-aligned bounding box (AABB) structure; sending the AABB to the tiler as an input, and generating, by the tiler, a visibility stream according to the AABB, wherein each entity of the visibility stream indicates that the AABB is fully visible, partially visible, or invisible in the view frustum; and sending the visibility stream back to the tiler as a further input along with the legacy mesh shader output parameters for coming rasterization in a fragment pass.