Inter-shader Attribute Buffer Optimization for GPU Memory

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing graphics processing unit (GPU) technologies lack full programmability, leading to inefficiencies in managing storage of inputs and outputs between shader programs, resulting in cumbersome workarounds that consume significant processing and memory resources and introduce delays.

Innovation Solution

A method and system that determine active shading engines, generate a buffer map based on input and output maps, and pre-defined rules to efficiently manage vertex data storage, allowing for flexible configuration of the graphics pipeline and reconciliation of different input and output requirements between shader programs.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If a prior art GPU allocates resources for all outputs of a shader program, then the shader program can potentially output maximum data, but memory is wasted when subsequent shaders require fewer inputs

Engineering Contradiction:
Improveflexibility in shader program configurationVSAvoidmemory allocation
Core Design Contradiction:
Adaptability or versatilityVSQuantity of substance

Solution Approach 1:

The patent implements per-attribute buffer allocation based on actual shader requirements. Each attribute in the vertex data structure can have its own buffer allocation determined by the intersection of output map and input map, rather than allocating uniformly for all possible outputs. This allows memory to be allocated locally and specifically where needed for each attribute that actually flows between shaders.

Inventive Principle:
Principle #3Local quality

Solution Approach 2:

The system dynamically changes buffer allocation parameters based on the specific combination of active shaders and their input/output requirements. The buffer map is generated by intersecting the output map of the first shader with the input map of the second shader, creating a customized allocation profile that adapts to the actual processing needs rather than using fixed maximum allocations.

Inventive Principle:
Principle #35Parameter changes

2Adaptability or versatility

If workarounds are used to emulate shader program maneuvering on prior art systems, then shader sequences can be altered, but processing resources are consumed and delays are introduced

Engineering Contradiction:
Improveshader program sequencing flexibilityVSAvoidprocessing efficiency
Core Design Contradiction:
Adaptability or versatilityVSProductivity

Solution Approach 1:

The patent creates a dynamic shader execution model where the graphics pipeline can be reconfigured at runtime to execute shaders in arbitrary sequences. Instead of fixed pipeline stages, the system allows dynamic specification of which shaders are active and in what order they execute, enabling flexible maneuvering of shader programs without workarounds while maintaining processing efficiency through direct hardware support.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The system provides a universal shader execution framework that can handle any shader sequence and combination through the buffer map mechanism. The same hardware infrastructure supports both traditional fixed pipeline execution and flexible custom shader sequences, making the system multi-functional without requiring separate workaround implementations for different execution scenarios.

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

3Adaptability or versatility

If the graphics pipeline is reconfigured multiple times to process different shader programs, then shader flexibility is achieved, but significant processing resources and time are consumed

Engineering Contradiction:
Improveshader program invocation flexibilityVSAvoidpipeline reconfiguration time
Core Design Contradiction:
Adaptability or versatilityVSLoss of time

Solution Approach 1:

The patent performs preliminary buffer map generation by intersecting output and input maps before shader execution begins. This pre-computation of the actual data flow requirements allows the system to allocate buffers and configure the pipeline in advance, avoiding repeated reconfiguration during actual shader processing. The buffer map is established once based on the desired shader sequence, and then execution proceeds efficiently without repeated setup overhead.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS8619087B2Inter-shader attribute buffer optimization
Publication Date: 2013.12.31 NVIDIA CORP
  • US8619087B2 patent drawing
  • US8619087B2 patent drawing
  • US8619087B2 patent drawing

AI summary

One embodiment of the present invention sets forth a technique for reducing the amount of memory required to store vertex data processed within a processing pipeline that includes a plurality of shading engines. The method includes determining a first active shading engine and a second active shading engine included within the processing pipeline, wherein the second active shading engine receives vertex data output by the first active shading engine. An output map is received and indicates one or more attributes that are included in the vertex data and output by the first active shading engine. An input map is received and indicates one or more attributes that are included in the vertex data and received by the second active shading engine from the first active shading engine. Then, a buffer map is generated based on the input map, the output map, and a pre-defined set of rules that includes rule data associated with both the first shading engine and the second shading engine, wherein the buffer map indicates one or more attributes that are included in the vertex data and stored in a memory that is accessible by both the first active shading engine and the second active shading engine.