Pixel Shader Output Map Using Per-Component Mask Bits

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional pixel shaders waste storage resources and bandwidth by outputting all components, even if some are disabled, and require substantial CPU overhead for recompilation to manage enabled components in 3D graphics APIs.

Innovation Solution

A system and method that uses a shader program header with per-component mask bits to selectively output only enabled components to render targets, combining these masks with API-level write masks to determine updated components, thereby avoiding unnecessary data transmission and storage.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If pixel shaders output all components for each enabled vector, then complete data is available for processing, but storage resources and bandwidth are wasted when some components are disabled

Engineering Contradiction:
Improvedata completenessVSAvoidbandwidth usage
Core Design Contradiction:
ReliabilityVSLoss of energy

Solution Approach 1:

The patent extracts only the enabled components from the component vector for output to the raster operations unit. By using per-component masks to identify which components are enabled, the system removes disabled components from the data stream, thereby reducing bandwidth consumption while ensuring that only necessary data is transmitted and stored.

Inventive Principle:
Principle #2Taking out (Extraction)

2Loss of energy

If pixel shaders recompile based on vector and component enabled state, then only enabled components are output, but substantial CPU overhead is required

Engineering Contradiction:
Improvebandwidth usageVSAvoidCPU overhead
Core Design Contradiction:
Loss of energyVSUse of energy by moving object

Solution Approach 1:

The patent performs preliminary action by pre-determining the enabled components using per-component masks before the pixel shader execution. The masks are set up in advance to reflect the enabled/disabled state of each component, allowing the shader to directly use these masks during execution without requiring runtime recompilation or complex state tracking by the CPU.

Inventive Principle:
Principle #10Preliminary action

3Productivity

If disabled components are output to render target, then all components are written, but data integrity is compromised since disabled component data is undetermined

Engineering Contradiction:
Improverendering throughputVSAvoiddata integrity
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The patent introduces per-component masks as an intermediary between the pixel shader output and the render target write operations. These masks act as a filter that prevents disabled components from being written to the render target, ensuring data integrity while allowing enabled components to be rendered at full throughput. The masks mediate the write operation by enabling or disabling specific component writes based on their enabled state.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS8922555B2Pixel shader output map
Publication Date: 2014.12.30 NVIDIA CORP
  • US8922555B2 patent drawing
  • US8922555B2 patent drawing
  • US8922555B2 patent drawing

AI summary

One embodiment of the present invention sets forth a technique for storing only the enabled components for each enabled vector and writing only enabled components to one or more specified render targets. A shader program header (SPH) file provides per-component mask bits for each render target. Each enabled mask bit indicates that the pixel shader generates the corresponding component as an output to the raster operations unit. In the hardware, the per-component mask bits are combined with the applications programming interface (API)-level per-component write masks to determine the components that are updated by the shader program. The combined mask is used as the write enable bits for components in one or more render targets. One advantage of the combined mask is that the components that are not updated are not forwarded from the pixel shader to the ROP, thereby saving bandwidth between those processing units.