IP Library Granted Patent US 9,058,680
Granted Patent B2
US 9,058,680 · App. 13/338,376 · Granted Jun 16, 2015

Multi-threaded multi-format blending device for computer graphics operations

Inventors: Iakovos Stamoulis (Patras, GR); George Sidiropoulos (Patras, GR); Theodore Roudas (Patras, GR); Nikolaos Strikos (Patras, GR)
Assignee: THINK SILICON LTD
G06T11/00G06T11/001G06T15/005
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 9,058,680
App. No.
13/338,376
Granted
Jun 16, 2015
Kind
B2
Abstract

The disclosed invention provides a solution for the problem of blending colors in a graphics processing unit. The plurality of blending equations used in various graphics layers is performed with a programmable streaming processor. Multiple simultaneous threads are used to eliminate pipeline latency and memory stalls. Overlays of predefined blending modes are used to minimize the time instruction memory is updated. The processing unit includes: (a) an instruction memory (b) hardware context registers for each executing stream (c) pipelined arithmetic units of predefined precision, including support for floating point (d) units that convert multi-format data to and from floating point precision (e) Look-up tables for quick color space transformations.

Claims (46)

1. A device for parallel multithreaded blending in graphics systems comprising:

means to receive a plurality of color components and alpha information from multiple source and multiple destination image fragment streams;

a blender processing unit capable of combing in parallel the color and alpha channels from a plurality of pixels in the source and destination images in order to produce a plurality of fragment pixels of a target image;

the blender processing unit capable of executing at least two parallel threads of operation, wherein said blender processing unit multiplexes in time a plurality of blending functions and memory operations on different fragments;

the blender processing unit supporting concurrent multithreaded processing of the plurality of fragments with different blending functions applied to each fragment;

the blender processing unit processes each of the multiple concurrent threads in round robin fashion;

the blender processing unit comprising multiple register files, multiple execution units, and multiple instruction pointers wherein each parallel thread is associated with a specific and predetermined instruction memory and instruction pointer; and

the blender processing unit comprising multiple instruction memories, wherein each instruction memory is associated with one thread and each instruction memory contains instruction code formatted as a very long instruction word and includes multiple op-codes, multiple destination descriptors, and multiple source descriptors.

2. The device of claim 1 , where color and alpha information is processed in floating point format.

3. The device of claim 1 , where color and alpha information is processed in logarithmic number format.

4. The device of claim 1 , where color and alpha information is processed in fixed point format.

5. The device of claim 1 , where color and alpha information can be processed in a chosen format at run time, where the choice is between at least two of fixed point, floating point, integer and logarithmic.

6. The device of claim 1 , where the color channel is represented in red, green and blue (RGB) colors, or in Luminance and Chrominance (YUV) components, the device capable of converting color channels from the RGB representation to YUV representation and from YUV representation to RGB representation.

7. The device of claim 1 , further comprising an instruction code, wherein the instruction code is formatted as a very long instruction word and includes one or more op-codes, one or more destination descriptors, and a plurality of source descriptors.

8. The device of claim 1 , wherein the blending device comprises a plurality of parallel arithmetic and logical units, having associated intermediate registers, which output to one or more selection/combination logic units.

9. The device of claim 8 , wherein each arithmetic and logical unit includes one or more input registers, a plurality of pipeline stages and a plurality of pipeline registers and shared instruction fetch logic.

10. A GPU unit equipped with a blending device, the said GPU interfacing to a display controller through a signal which notifies the said GPU for bandwidth availability, so that the said GPU can adapt its throughput, wherein the blending device is adapted to combine in parallel color and alpha channels from a plurality pixels in multiple source and multiple destination images in order to produce multiple fragments of a target image, the blending device also adapted to execute at least two parallel threads of operation, wherein the blending device multiplexes in time a plurality of blending functions and memory operations on different fragments, the blending device supporting concurrent multithreaded processing of the plurality of fragments with different blending functions applied to each fragment;

the blending device processing each of the multiple concurrent threads in round robin fashion;

the blending device comprising multiple register files, multiple execution units, and multiple instruction pointers wherein each parallel thread is associated with a specific and predetermined instruction memory and instruction pointer; and

the blending device comprising multiple instruction memories, wherein each instruction memory is associated with one thread and each instruction memory contains instruction code formatted as a very long instruction word and includes multiple op-codes, multiple destination descriptors, and multiple source descriptors.

11. A method for parallel multithreaded blending in graphics systems comprising:

receiving a plurality of color components and alpha information from multiple source and multiple destination image fragment streams;

combing, in parallel, the color and alpha channels from a plurality of pixels in the source and destination images in order to produce multiple fragments of a target image by executing at least two parallel threads of operation, wherein a blender processing unit multiplexes in time a plurality of blending functions and memory operations on different fragments, the blender processing unit supporting concurrent multithreaded processing of the plurality of fragments with different blending functions applied to each fragment;

the blender processing unit processing each of the multiple concurrent threads in round robin fashion;

the blender processing unit comprising multiple register files, multiple execution units, and multiple instruction pointers wherein each parallel thread is associated with a specific and predetermined instruction memory and instruction pointer; and

the blender processing unit comprising multiple instruction memories, wherein each instruction memory is associated with one thread and each instruction memory contains instruction code formatted as a very long instruction word and includes multiple op-codes, multiple destination descriptors, and multiple source descriptors.

12. The method of claim 11 , where color and alpha information is processed in floating point format.

13. The method of claim 11 , where color and alpha information is processed in logarithmic number format.

14. The method of claim 11 , where color and alpha information is processed in fixed point format.

15. The method of claim 11 , where color and alpha information can be processed in a chosen format at run time, where the choice is between at least two of fixed point, floating point, integer and logarithmic.

16. The method of claim 11 , where the color channel is represented in red, green and blue (RGB) colors, or in Luminance and Chrominance (YUV) components, the device capable of converting color channels from the RGB representation to YUV representation and from YUV representation to RGB representation.

17. The method of claim 11 , further comprising instruction code, wherein the instruction code is formatted as a very long instruction word and includes an op-code, a destination descriptor, and a plurality of source descriptors.

18. The method of claim 11 , wherein the blender processing unit comprises a plurality of parallel arithmetic and logical units, having associated intermediate registers, which output to one or more selection/combination logic units.

19. The method of claim 18 , wherein each arithmetic and logical unit includes one or more input registers, a plurality of pipeline stages, a plurality of pipeline registers and shared instruction fetch logic.

20. A device for blending in graphics systems comprising:

source and destination image fragment streams that supply a plurality of color components and alpha information;

a blender processing unit adapted to combine in parallel the color and alpha channels from fragments in multiple source and multiple destination images in order to produce a fragment pixel of a target image;

the blender processing unit further adapted to execute in parallel multiple color and alpha data belonging to same or to different target pixels;

the blender processing unit including pipelined arithmetic units;

the blender processing unit adapted to execute at least two parallel threads of operation, with a threading operation in color and alpha data belonging to the same or to different pixels;

the blender unit containing multiple register files to support multithreading;

the blender unit including a plurality of pipelined arithmetic units;

the blender processing unit processing each of the multiple concurrent threads in round robin fashion;

the blender processing unit comprising multiple register files, multiple execution units, and multiple instruction pointers wherein each parallel thread is associated with a specific and predetermined instruction memory and instruction pointer; and

the blender processing unit comprising multiple instruction memories, wherein each instruction memory is associated with one thread and each instruction memory contains instruction code formatted as a very long instruction word and includes multiple op-codes multiple destination descriptors, and multiple source descriptors; and

a storage device adapted to hold a sequence of operations for the blender processing unit, the storage device storing information about how the multiple color and alpha data belonging to the same or to different target pixels can be processed in parallel, wherein the storage device is divided in multiple contexts in order to support multithreading.

Assignments (5)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 9, 2026
From: THINK SILICON SINGLE MEMBER P.C. AND APPLIED MATERIALS, INC.
To: QUALCOMM INCORPORATED
Reel/Frame 075735/0803 →
CHANGE OF NAME Recorded Mar 6, 2026
From: THINK SILICON RESEARCH AND TECHNOLOGY SA
To: THINK SILICON RESEARCH AND TECHNOLOGY SINGLE MEMBER S.A.
Reel/Frame 075031/0846 →
CHANGE OF NAME Recorded Mar 6, 2026
From: THINK SILICON RESEARCH AND TECHNOLOGY SINGLE MEMBER S.A.
To: THINK SILICON SINGLE MEMBER P.C.
Reel/Frame 075032/0035 →
CHANGE OF NAME Recorded Sep 15, 2015
From: THINK SILICON LTD
To: THINK SILICON SA
Reel/Frame 036610/0040 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 23, 2014
From: STAMOULIS, IAKOVOS; SIDIROPOULOS, GEORGE; ROUDAS, THEODORE; STRIKOS, NIKOLAOS
To: THINK SILICON LTD
Reel/Frame 033381/0508 →
Continuity (1)
Related Publication 20130169658A1 · Jul 4, 2013