Integer Texture Loading in GPU Local Memory
Find Innovative SolutionsGenerate 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
Engineering 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
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.
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.
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
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.
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.
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
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.
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.
Data Source
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.


