Shader Attribute Storage Buffer Optimization

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

The existing storage systems for shader programs require separate allocation of memory for input and output attributes, which can limit processing performance due to increased memory needs, especially when additional shader programs or parallel execution is required.

Innovation Solution

A method to determine the size of an attribute storage buffer by identifying input and output attributes consumed by a shader program, allowing for a single buffer allocation when optimization conditions are met, thereby reducing memory usage and enabling more efficient execution.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of operation

If separate memory portions are allocated for input and output attributes, then data access and writing can occur in arbitrary order, but memory usage increases and processing performance is limited

Engineering Contradiction:
Improvearbitrary order accessVSAvoidmemory allocation
Core Design Contradiction:
Ease of operationVSQuantity of substance

Solution Approach 1:

The patent combines separate input and output attribute memory buffers into a single unified attribute storage buffer. This allows the shader program to read input attributes and write output attributes to the same memory space, reducing total memory allocation while maintaining arbitrary access order through proper buffer management and offset tracking.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The patent introduces temporal dimension to memory management by implementing a dual-buffer system where attributes are read from one buffer and written to another buffer in sequence. This temporal separation allows overlapping read and write operations without requiring simultaneous separate memory spaces, improving memory utilization efficiency.

Inventive Principle:
Principle #17Another dimension (Dimensionality change)

2Productivity

If more memory is allocated for shader program attributes, then more shader programs can execute or parallel execution can increase, but processing performance becomes limited due to memory constraints

Engineering Contradiction:
Improveparallel execution capabilityVSAvoidmemory availability
Core Design Contradiction:
ProductivityVSQuantity of substance

Solution Approach 1:

By merging input and output attribute storage into a single buffer, the patent effectively halves the memory requirement per shader program compared to separate buffer allocation. This freed memory can be reallocated to support more concurrent shader programs or increase parallel thread execution, directly improving productivity.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The patent changes the memory allocation parameter from separate buffers (input_buffer_size + output_buffer_size) to a single buffer with optimized size calculation based on actual usage patterns. This parameter change enables more efficient memory utilization and supports higher shader program throughput.

Inventive Principle:
Principle #35Parameter changes

3Quantity of substance

If a single attribute storage buffer is used, then memory allocation is optimized, but separate allocation for input and output attributes is required in conventional systems

Engineering Contradiction:
Improvememory efficiencyVSAvoidbuffer management complexity
Core Design Contradiction:
Quantity of substanceVSDevice complexity

Solution Approach 1:

The patent segments the single attribute storage buffer into logical regions for input and output attributes using offset tracking and size calculations. This segmentation is implemented through compiler-generated code that manages read and write pointers, providing the benefits of a single buffer while maintaining the organizational structure needed for correct operation.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces buffer management logic as an intermediary layer between the shader program and the unified attribute buffer. This intermediary handles the complexity of tracking input/output attribute locations, managing read/write offsets, and ensuring data integrity, thereby shielding the shader program from the complexity of unified buffer management.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS9214008B2Shader program attribute storage
Publication Date: 2015.12.15 NVIDIA CORP
  • US9214008B2 patent drawing
  • US9214008B2 patent drawing
  • US9214008B2 patent drawing

AI summary

A system, method, and computer program product are provided for determining a size of an attribute storage buffer. Input attributes read by a shader program to generate output attributes are identified. A portion of the output attributes to be consumed by a destination shader program is identified. The size of the attribute storage buffer that is allocated for execution of the shader program is computed based on the input attributes and the portion of the output attributes.