IP Library Granted Patent US 12,705,815
Granted Patent B2
US 12,705,815 · App. 18/474,485 · Granted Aug 11, 2026

Software graphics rendering

Inventors: Guoan Sang (Markham, CA); Yang Liu (Toronto, CA)
Assignee: HUAWEI TECHNOLOGIES CO., LTD.
G06T15/005G06F9/30105G06F9/45516
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,705,815
App. No.
18/474,485
Granted
Aug 11, 2026
Kind
B2
Abstract

Graphics rendering systems and methods for rendering a 3D scene on a screen of a user device. 3D scene data representing a 3D scene is received by a CPU and processed through a graphics rendering pipeline in which graphics rendering instructions are executed by the CPU in a Single Instruction, Multiple Data (SIMD) approach, wherein multiple data elements of the SIMD approach are stored in and retrieved from an SVE register of the CPU. Pixel data resulting from the graphics rendering pipeline is stored in the frame buffer for output to the screen via a renderer.

Claims (40)

1 . A graphics rendering system for rendering a 3D scene on a screen of a user device, the system comprising:

a central processing unit (CPU) including at least one hardware-implemented Scalable Vector Extension (SVE) register;

a frame buffer; and

a non-transitory computer-readable medium storing instructions that, when executed by the CPU, are configured to:

receive 3D scene data representing the 3D scene;

process the 3D scene data through a graphics rendering pipeline in which graphics rendering instructions are executed in a Single Instruction, Multiple Data (SIMD) approach, wherein multiple data elements of the SIMD approach are stored in and retrieved from the SVE register; and

store pixel data resulting from the graphics rendering pipeline in the frame buffer for output to the screen via a renderer;

wherein the graphics rendering pipeline includes fragment processing being performed on a fragment block of M*N fragments, wherein M and N are determined based on at least one of a bit width of the SVE register and a vector length of the SVE register, the vector length varying at runtime, wherein the fragment block is loaded into and retrieved from the SVE register when executing fragment processing instructions according to the SIMD approach.

2 . The system of claim 1 , wherein the graphics rendering pipeline includes vertex generation and vertex processing.

3 . The system of claim 1 , wherein the graphics rendering pipeline includes primitive generation and primitive processing.

4 . The system of claim 1 , wherein the graphics rendering pipeline includes fragment generation and fragment processing.

5 . The system of claim 1 , wherein the fragment processing includes texture sampling for coloring the fragments based on texture data stored in a texture buffer of the system.

6 . The system of claim 1 , wherein the fragment processing includes shader processing.

7 . The system of claim 1 , wherein the fragment processing includes blending a pixel output of the fragment processing with pixel data included in the frame buffer.

8 . The system of claim 1 , comprising a dynamic compiler configured to generate SVE code for execution by the CPU in performing the graphics rendering pipeline.

9 . The system of claim 8 , wherein the dynamic compiler is configured to generate the SVE code according to a Just In Time (JIT) approach.

10 . The system of claim 8 , wherein the dynamic compiler is configured to determine a number of data elements to include in the SVE register using a loop vectorization algorithm.

11 . The system of claim 1 , wherein the SVE register has a total bit width of T and the data elements have a bit length of p, wherein number of data bits stored in and retrieved from the SVE register is T/p rounded to a nearest integer number of data elements that will fit in the SVE register.

12 . The system of claim 1 , wherein the multiple data elements include fragments, vertices or primitives.

13 . The system of claim 1 , wherein the SVE register has a bit width of between 256 and 2048 bits.

14 . A user device for rendering a 3D scene on a screen thereof, the user device comprising:

a central processing unit (CPU) including at least one hardware-implemented Scalable Vector Extension (SVE) register;

a frame buffer; and

a non-transitory computer-readable medium storing instructions that, when executed by the CPU, are configured to:

receive 3D scene data representing the 3D scene;

process the 3D scene data through a graphics rendering pipeline in which graphics rendering instructions are executed in a Single Instruction, Multiple Data (SIMD) approach, wherein multiple data elements of the SIMD approach are stored in and retrieved from the SVE register; and

store pixel data resulting from the graphics rendering pipeline in the frame buffer for output to the screen via a renderer;

wherein the graphics rendering pipeline includes fragment processing being performed on a fragment block of M*N fragments, wherein M and N are determined based on at least one of a bit width of the SVE register and a vector length of the SVE register, the vector length varying at runtime, wherein the fragment block is loaded into and retrieved from the SVE register when executing fragment processing instructions according to the SIMD approach.

15 . The user device of claim 14 , wherein the fragment processing includes at least one of:

texture sampling for coloring the fragments based on texture data stored in a texture buffer of the user device,

shader processing, and

blending a pixel output of the fragment processing with pixel data included in the frame buffer.

16 . The user device of claim 14 , comprising a dynamic compiler configured to generate SVE code for execution by the CPU in performing the graphics rendering pipeline.

17 . The user device of claim 16 , wherein the dynamic compiler is configured to determine a number of data elements to include in the SVE register using a loop vectorization algorithm.

18 . A graphics rendering computer implemented method for rendering a 3D scene on a screen of a user device, the method comprising:

receiving, via a Central Processing Unit (CPU), 3D scene data representing the 3D scene;

processing, via the CPU, the 3D scene data through a graphics rendering pipeline in which graphics rendering instructions are executed in a Single Instruction, Multiple Data (SIMD) approach, wherein multiple data elements of the SIMD approach are stored in and retrieved from at least one hardware-implemented SVE register of the CPU; and

storing pixel data resulting from the graphics rendering pipeline in a frame buffer for output to the screen via a renderer;

wherein the graphics rendering pipeline includes fragment processing being performed on a fragment block of M*N fragments, wherein M and N are determined based on at least one of a bit width of the SVE register and a vector length of the SVE register, the vector length varying at runtime, wherein the fragment block is loaded into and retrieved from the SVE register when executing fragment processing instructions according to the SIMD approach.

19 . The method of claim 18 , wherein the fragment processing comprises iteratively processing successive fragment blocks until all fragments associated with the 3D scene have been processed.