Texture State Segmentation for Multi-API Graphics Processing

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional graphics APIs use a unified state structure to store texture state, limiting flexibility and compatibility with graphics processors that support separate texture state structures, making it difficult to efficiently process texture data across different APIs.

Innovation Solution

The method involves separating texture state into a texture header portion for data characteristics and a texture sampler portion for processing attributes, stored in independent structures, and using a binding table to emulate a single unified structure, allowing graphics processors to support multiple APIs by reading these states from external memory as needed.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If a unified state structure is used to store texture state, then compatibility with conventional graphics APIs is maintained, but flexibility to support multiple graphics APIs and pair textures with samplers is limited

Engineering Contradiction:
Improveflexibility to support multiple APIsVSAvoidstructure complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The texture state is segmented into two separate structures: a texture header structure containing texture map specific characteristics and a texture sampler structure containing texture processing attributes. This segmentation allows independent management and flexible pairing of textures and samplers, enabling support for multiple graphics APIs while maintaining organized state management.

Inventive Principle:
Principle #1Segmentation

2Adaptability or versatility

If texture state is stored in separate structures, then flexibility and multi-API support are improved, but compatibility with conventional unified state structure APIs deteriorates

Engineering Contradiction:
Improvemulti-API supportVSAvoidAPI compatibility
Core Design Contradiction:
Adaptability or versatilityVSReliability

Solution Approach 1:

A binding table structure is introduced as an intermediary between the separate texture header/sampler structures and the shader program. The binding table stores indices that link texture headers to samplers, emulating the unified state structure interface that conventional APIs expect, while internally utilizing the flexible separate structure implementation.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Speed

If dedicated memory is allocated for all texture states within the processor, then fast access is achieved, but memory usage and device complexity increase

Engineering Contradiction:
Improvetexture state access speedVSAvoidmemory usage
Core Design Contradiction:
SpeedVSQuantity of substance

Solution Approach 1:

The texture state structures (texture headers and samplers) are extracted from the processor's dedicated internal memory and stored in external system memory. The binding table stores compact indices that reference these external structures, allowing the processor to access texture state information from external memory on-demand, reducing internal memory requirements while maintaining access capability.

Inventive Principle:
Principle #2Taking out (Extraction)

Data Source

PatentUS7948495B1Linking texture headers and texture samplers
Publication Date: 2011.05.24 NVIDIA CORP
  • US7948495B1 patent drawing
  • US7948495B1 patent drawing
  • US7948495B1 patent drawing

AI summary

Systems and methods used for binding texture state stored in independent structures may be used by more than one graphics applications programming interface (API). A texture header portion of the texture state defines texture data characteristics and is stored in a first structure. A texture sampler portion of the texture state specifies texture processing attributes and is stored in a second structure. A single unified structure is emulated for use by APIs that store the texture state in a single structure. Therefore, a graphics processor may support more than one graphics API for processing texture data.