Common Shader Core for Programmable Graphics Pipeline

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current graphics processing units (GPUs) face limitations in programmability, data sharing, and resource utilization within the graphics pipeline, leading to bottlenecks and inefficiencies in rendering complex 3D graphics, particularly in games, due to fixed hardware configurations and lack of direct operations on primitives other than vertices.

Innovation Solution

A dynamically configurable common shader core that functions as a pixel shader, vertex shader, or geometry shader, enabling operations on any primitives, including triangles, and allowing for the generation of new geometry within the pipeline, along with a stream output for recursive data processing without CPU intervention.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If fixed hardware configurations are used in GPUs, then device complexity is reduced and ease of manufacture is improved, but programmability and adaptability are limited

Engineering Contradiction:
ImproveprogrammabilityVSAvoidhardware configuration complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent implements a common shader core that can be dynamically configured to perform multiple shader types (vertex shader, pixel shader, geometry shader) through software control rather than requiring separate fixed hardware units for each shader type. This universal core approach enables the GPU to adapt to different rendering needs while reducing overall hardware complexity.

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

Solution Approach 2:

The patent introduces dynamically configurable shader cores that can change their function at runtime based on the rendering task requirements. The shader cores can be programmed to perform different operations (vertex processing, pixel processing, geometry generation) allowing the hardware to adapt dynamically rather than being static.

Inventive Principle:
Principle #15Dynamics

2Productivity

If separate dedicated shader units are used for vertex and pixel processing, then processing specialization is improved, but resource utilization and productivity are reduced due to bottlenecks

Engineering Contradiction:
Improverendering efficiencyVSAvoidshader unit structure
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent merges previously separate vertex shader and pixel shader units into a unified common shader core architecture. This consolidation eliminates resource bottlenecks by allowing flexible allocation of shader resources and enables more efficient pipeline utilization, as the same core can be dynamically assigned to different shader tasks based on demand.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

By creating a universal shader core that can perform both vertex and pixel processing functions, the patent eliminates the need for dedicated separate units. This universal approach improves productivity by allowing better resource utilization and reducing idle time in the rendering pipeline.

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

3Productivity

If data must be retrieved from frame buffer for recursive processing, then data access is simplified, but processing time and productivity are reduced due to CPU intervention requirements

Engineering Contradiction:
Improverecursive processing speedVSAvoiddata access complexity
Core Design Contradiction:
ProductivityVSEase of operation

Solution Approach 1:

The patent introduces a stream output mechanism that acts as an intermediary between the graphics pipeline and CPU memory. This stream output buffer allows recursive processing data to be passed directly within the GPU without requiring retrieval through the frame buffer and CPU intervention, thereby maintaining ease of operation while dramatically improving processing speed.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent extracts the recursive processing data path from the traditional frame buffer route and creates a dedicated stream output path. This extraction allows recursive operations to bypass the CPU and frame buffer overhead, enabling fast in-GPU recursive processing while keeping the interface simple through the stream output mechanism.

Inventive Principle:
Principle #2Taking out (Extraction)

4Adaptability or versatility

If vertex shaders are limited to operating only on vertices, then processing simplicity is maintained, but functionality and adaptability are restricted for operating on other primitives

Engineering Contradiction:
Improveprimitive operation capabilityVSAvoidshader functionality
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent creates a universal shader core that can operate on multiple primitive types (vertices, triangles, lines) rather than being limited to vertices only. This is achieved through programmable geometry shaders that can be configured to process different primitive types, providing enhanced versatility without requiring separate dedicated hardware for each primitive type.

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

Solution Approach 2:

The patent implements dynamically programmable shaders that can change their operation mode based on the input primitive type. The geometry shader can be programmed to handle vertices, triangles, or other primitives dynamically, allowing the same hardware to adapt to different geometric processing needs without increasing physical complexity.

Inventive Principle:
Principle #15Dynamics

Data Source

PatentUS7978205B1Systems and methods for providing an enhanced graphics pipeline
Publication Date: 2011.07.12 MICROSOFT TECHNOLOGY LICENSING LLC
  • US7978205B1 patent drawing
  • US7978205B1 patent drawing
  • US7978205B1 patent drawing

AI summary

An enhanced graphics pipeline is provided that enables common core hardware to perform as different components of the graphics pipeline, programmability of primitives including lines and triangles by a component in the pipeline, and a stream output before or simultaneously with the rendering a graphical display with the data in the pipeline. The programmer does not have to optimize the code, as the common core will balance the load of functions necessary and dynamically allocate those instructions on the common core hardware. The programmer may program primitives using algorithms to simplify all vertex calculations by substituting with topology made with lines and triangles. The programmer takes the calculated output data and can read it before or while it is being rendered. Thus, a programmer has greater flexibility in programming. By using the enhanced graphics pipeline, the programmer can optimize the usage of the hardware in the pipeline, program vertex, line or triangle topologies altogether rather than each vertex alone, and read any calculated data from memory where the pipeline can output the calculated information.