Shader Variable Mapping to Rectangular Register Regions

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing graphics processing unit (GPU) compilers require separate support for multiple data storage types, leading to a larger memory footprint and complexity in accommodating new shader programming languages and standards.

Innovation Solution

Implementing a universal storage representation for shader program data elements, allowing the compiler to map data items to rectangular regions of a register file, thereby reducing the compiler footprint and simplifying the compilation process.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If separate support for multiple data storage types is implemented in GPU compilers, then the compiler can accommodate different shader programming languages and standards, but the compiler footprint and complexity increase

Engineering Contradiction:
Improvesupport for multiple data storage typesVSAvoidcompiler footprint
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent applies universality by creating a unified data storage representation that can represent multiple data storage types (such as different shader variable types) using a single common structure. This allows the compiler to handle diverse data types through one universal mechanism rather than requiring separate support structures for each type, thereby reducing compiler footprint while maintaining versatility

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

Solution Approach 2:

The patent uses parameter changes by transforming different data storage types into a standardized representation with uniform parameters. By changing the representation parameters to a common format, the compiler can process various data types consistently, reducing the complexity of maintaining separate handling logic for each data storage type

Inventive Principle:
Principle #35Parameter changes

2Adaptability or versatility

If separate support for multiple data storage types is implemented in GPU compilers, then the compiler can accommodate different shader programming languages and standards, but the compiler complexity increases

Engineering Contradiction:
Improvesupport for multiple data storage typesVSAvoidcompiler complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent applies universality by creating a unified data storage representation that can represent multiple data storage types (such as different shader variable types) using a single common structure. This allows the compiler to handle diverse data types through one universal mechanism rather than requiring separate support structures for each type, thereby reducing compiler complexity while maintaining versatility

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

Solution Approach 2:

The patent merges multiple separate data storage type representations into a single unified representation. By combining the handling of different data types into one integrated structure, the compiler complexity is reduced as there is no longer the need to maintain separate processing logic for each data storage type

Inventive Principle:
Principle #5Merging (Combining)

Data Source

PatentUS8379032B2System and method of mapping shader variables into physical registers
Publication Date: 2013.02.19 QUALCOMM INC
  • US8379032B2 patent drawing
  • US8379032B2 patent drawing
  • US8379032B2 patent drawing

AI summary

The present disclosure includes system and method of mapping shader variables into physical registers. In an embodiment, a graphics processing unit (GPU) and a memory coupled to the GPU are disclosed. The memory includes a processor readable data file that has a register file portion. The register file portion has a rectangular structure including a plurality of data items. At least two of the plurality of data items corresponding to data elements of a shader program. The data elements have different data storage types.