GPU Path Rendering with Unified Primitive Type Buffer
Find Innovative SolutionsGenerate 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
Engineering 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
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
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
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
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
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
Data Source
Figure 1
Figure 2
Figure 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.