GPU Path Rendering with Unified Primitive Type Buffer

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Modern GPUs lack hardware acceleration for path rendering commands, particularly for curved primitives like elliptic arcs and Bézier curves, due to the design of prevailing 3D graphics APIs, leading to inefficiencies in processing and rendering of diverse path types.

Innovation Solution

The implementation of a graphics processing unit (GPU) with hardware and methods that support vertex buffers containing multiple path rendering primitive types, including a new draw call that takes a vertex buffer and a primitive type buffer, allowing the GPU to determine and render different primitive types within a single buffer, modifying stages like the input assembler, hull shader, and domain shader to enhance path rendering performance.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If a typical 3D graphics pipeline is used for path rendering, then the pipeline can process standard 3D primitives (points, lines, triangles), but it cannot directly render curved primitives (elliptic arcs, Bézier curves) without additional hardware support

Engineering Contradiction:
Improveability to render different primitive typesVSAvoidhardware complexity for path rendering
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent implements a universal 3D graphics pipeline that can handle both standard 3D primitives and curved path primitives through a unified vertex buffer interface. The input assembler and rasterizer are enhanced to recognize and process multiple primitive types (lines, elliptic arcs, quadratic/cubic Bézier curves) using the same hardware infrastructure, eliminating the need for separate dedicated path rendering hardware while maintaining support for diverse primitive types

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

2Reliability

If multiple separate draw calls are used for different primitive types, then each primitive type can be processed correctly, but the overhead and latency increase significantly

Engineering Contradiction:
Improvecorrect processing of primitive typesVSAvoiddraw call overhead and CPU-to-GPU transfer time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent merges multiple separate draw calls for different primitive types into a single unified draw call. The vertex buffer is enhanced to include a primitive type indicator for each vertex, allowing the GPU to process lines, elliptic arcs, quadratic Bézier curves, and cubic Bézier curves in a single rendering pass. This consolidation eliminates redundant CPU-to-GPU data transfers and reduces draw call overhead while maintaining correct processing of each primitive type through the type indicators stored in the vertex buffer

Inventive Principle:
Principle #5Merging (Combining)

3Speed

If the rasterizer is designed for low-order non-curved primitives, then it can efficiently rasterize points, lines, and triangles, but it lacks capability to directly render curved primitives

Engineering Contradiction:
Improverasterization speed for simple primitivesVSAvoidcapability to render curved primitives
Core Design Contradiction:
SpeedVSAdaptability or versatility

Solution Approach 1:

The patent extends the rasterizer's capability by introducing parameter changes in how it processes vertex data. The rasterizer receives additional parameters through the enhanced vertex buffer (primitive type indicators) that specify whether each vertex sequence represents a line, elliptic arc, quadratic Bézier curve, or cubic Bézier curve. This allows the existing fast rasterization hardware to adapt its processing behavior based on the primitive type parameter, enabling curved primitive rendering without sacrificing the speed advantages of the original low-order primitive optimization

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentEP3084727B1GPU-accelerated path rendering
Publication Date: 2017.10.04 QUALCOMM INC
  • EP3084727B1 patent drawingFigure 1
  • EP3084727B1 patent drawingFigure 2
  • EP3084727B1 patent drawingFigure 3

AI summary

A graphics processing unit (GPU) comprises a memory, and at least one processor configured to: receive a primitive type buffer comprising a plurality of primitive type entries, wherein each of a plurality of vertices of a vertex buffer of the GPU are associated with one or more of the plurality of primitive type entries, determine primitives based on the plurality of vertices and the associated one or more primitive type entries, and rendering, by the GPU, the primitives based on the plurality of vertices and the associated one or more primitive type entries of the primitive type buffer.