Integer Texture Loading in GPU Local Memory

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing graphics processing units (GPUs) are limited in their ability to perform integer processing due to the data path connecting shader units to GPU local memory, which always casts texture data to floating-point or normalized representations, constraining general computation using texture maps.

Innovation Solution

A method for loading and unloading integer texture images into GPU local memory, involving determining the integer format of texture data, unpacking it into arrays, populating unpopulated fields, and storing it without conversion to floating-point, using new data formats and pipelines to enable direct access and processing by shader units.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If texture data is always cast to floating-point or normalized representation in the data path, then compatibility with existing fixed-function shaders is maintained, but the GPU's ability to perform general computation using integer data stored in texture maps is constrained

Engineering Contradiction:
ImproveGPU's ability to perform general computation using integer dataVSAvoiddata path complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent segments the texture loading process into separate paths: a first path for loading integer texture images and a second path for loading floating-point or normalized texture images. This segmentation allows integer data to be loaded directly into GPU local memory without being cast to floating-point, enabling general computation while maintaining compatibility with existing shader paths.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces an intermediary mechanism - a texture loader that detects the data type (integer or floating-point) and routes it through the appropriate loading path. This intermediary handles the complexity of type detection and routing, allowing the GPU to access integer texture data directly without modifying the core data path architecture.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Adaptability or versatility

If new integer texture loading mechanisms are introduced, then full access to integer data is enabled for general computation, but the complexity of the texture loading system increases

Engineering Contradiction:
Improveaccess to integer data for computationVSAvoidtexture loading system complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent implements a universal texture loading system that can handle both integer and floating-point texture images through a single integrated loader. The loader detects the data type and automatically routes it through the appropriate path (first path for integer, second path for floating-point), providing multi-functionality without requiring separate independent systems.

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

Solution Approach 2:

The patent changes the parameter of data type handling by introducing type detection and selective routing based on the texture data format. This allows the system to adapt its behavior based on the input data type, enabling integer data access while using the same loading infrastructure for both integer and floating-point textures.

Inventive Principle:
Principle #35Parameter changes

3Productivity

If integer texture data is stored without conversion to floating-point, then computation efficiency is improved, but compatibility with existing shader expectations may be affected

Engineering Contradiction:
Improvecomputation efficiencyVSAvoidcompatibility with existing shaders
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The patent segments the shader execution paths into separate routes: one for integer texture data and one for floating-point texture data. This segmentation ensures that existing floating-point shaders continue to work as expected while new integer shaders can access integer data directly, maintaining compatibility without sacrificing efficiency.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces dynamic type detection and routing in the texture loading system. The loader dynamically determines whether to load integer or floating-point data based on the texture format, and dynamically routes it to the appropriate shader path. This dynamic behavior ensures compatibility with existing shader expectations while enabling efficient integer computation when needed.

Inventive Principle:
Principle #15Dynamics

Data Source

PatentUS7986325B1Loading integer-based data into a graphics processing system
Publication Date: 2011.07.26 NVIDIA CORP
  • US7986325B1 patent drawing
  • US7986325B1 patent drawing
  • US7986325B1 patent drawing

AI summary

One embodiment of the present invention sets forth a technique for improving the flexibility and programmability of a graphics pipeline by enabling full access to integer texture maps within a graphics processing unit (GPU). A new mechanism for loading and unloading integer texture images is disclosed that enables the shader units within the GPU to have full access to integer values stored within an integer image buffer in a GPU local memory. New integer formats are added to the graphics API that indicate that data should be loaded and processed without the prior art conversion to a floating-point representation, thereby enabling the use of these new integer data types.