Vertex and Pixel Shader Register Indexing for Dynamic Flow Control

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current 3D graphics chips lack flexibility and efficiency in vertex and pixel shaders, particularly in dynamic flow control, register indexing, and support for float data, limiting the complexity and sophistication of graphics processing.

Innovation Solution

The introduction of indexable arrays of on-chip storage elements, dynamic branching, and 32-bit float support in vertex and pixel shaders, along with increased register storage and instruction capacity, enables more sophisticated graphics calculations and rendering.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Speed

If fixed-function graphics pipeline is used, then processing speed is improved, but flexibility and adaptability are worsened

Engineering Contradiction:
Improveprocessing speedVSAvoidflexibility
Core Design Contradiction:
SpeedVSAdaptability or versatility

Solution Approach 1:

The patent implements dynamic branching in vertex and pixel shaders, allowing the graphics pipeline to switch between different processing paths at runtime based on conditional logic. This enables the system to maintain high processing speeds through hardware acceleration while adapting to different graphics algorithms and effects dynamically, resolving the contradiction between fixed-speed processing and flexible adaptability.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The patent introduces indexable arrays of on-chip storage elements and 32-bit float support, changing the data types and storage parameters available to shaders. This allows the graphics pipeline to handle diverse data formats and complex calculations efficiently, maintaining processing speed while significantly increasing flexibility in implementing different graphics effects and algorithms.

Inventive Principle:
Principle #35Parameter changes

2Quantity of substance

If on-chip storage elements are increased, then register storage capacity is improved, but device complexity is worsened

Engineering Contradiction:
Improveregister storage capacityVSAvoiddevice complexity
Core Design Contradiction:
Quantity of substanceVSDevice complexity

Solution Approach 1:

The patent segments the storage system into indexable arrays of on-chip storage elements organized by shader stage (vertex and pixel shaders). This segmentation allows efficient memory access patterns and reduces the complexity of managing large amounts of storage, as each segment can be independently addressed and optimized for its specific shader stage requirements.

Inventive Principle:
Principle #1Segmentation

3Adaptability or versatility

If dynamic branching is implemented, then flow control flexibility is improved, but instruction complexity is worsened

Engineering Contradiction:
Improveflow control flexibilityVSAvoidinstruction complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent implements preliminary compilation of shader programs into intermediate representation, where dynamic branching logic is pre-processed and optimized before execution. This preliminary action reduces the complexity of dynamic branching instructions during runtime, as the branching logic has already been analyzed and optimized in advance, allowing flexible flow control without excessive instruction complexity.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS8823718B2Systems and methods for downloading algorithmic elements to a coprocessor and corresponding techniques
Publication Date: 2014.09.02 MICROSOFT TECHNOLOGY LICENSING LLC
  • US8823718B2 patent drawing
  • US8823718B2 patent drawing
  • US8823718B2 patent drawing

AI summary

Systems and methods for downloading algorithmic elements to a coprocessor and corresponding processing and communication techniques are provided. For an improved graphics pipeline, the invention provides a class of co-processing device, such as a graphics processor unit (GPU), providing improved capabilities for an abstract or virtual machine for performing graphics calculations and rendering. The invention allows for runtime-predicated flow control of programs downloaded to coprocessors, enables coprocessors to include indexable arrays of on-chip storage elements that are readable and writable during execution of programs, provides native support for textures and texture maps and corresponding operations in a vertex shader, provides frequency division of vertex streams input to a vertex shader with optional support for a stream modulo value, provides a register storage element on a pixel shader and associated interfaces for storage associated with representing the “face” of a pixel, provides vertex shaders and pixel shaders with more on-chip register storage and the ability to receive larger programs than any existing vertex or pixel shaders and provides 32 bit float number support in both vertex and pixel shaders.