# US 8,570,336 B2 · Texture unit for general purpose computing

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 8,570,336 B2
- Document ID: US8570336B2
- Status: Granted
- Kind: B2
- Application number: 12/633,062
- Filed: 2009-12-08
- Published: 2011-06-09
- Granted: 2013-10-29
- Earliest claimed: 2009-12-08
- Assignees: Intel Corporation
- Applicants: Victor W. Lee; Mikhail Smelyanskiy; Ganesh S. Dasika; Jose Gonzalez; Jatin Chhugani; Yen-Kuang Chen; Changkyu Kim; Julio Gago; Santiago Galan; Victor Moya Del Barrio
- Inventors: Victor W. Lee; Mikhail Smelyanskiy; Ganesh S. Dasika; Jose Gonzalez; Jatin Chhugani; Yen-Kuang Chen; Changkyu Kim; Julio Gago; Santiago Galan; Victor Moya Del Barrio
- Web page: https://patentgrep.com/patent/US8570336B2

## CPC

- G06T 11/10: Texturing; Colouring; Generation of textures or colours (retouching, inpainting or scratch removal G06T5/77)
- G06F 17/16: Matrix or vector computation {, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization (matrix transposition G06F7/78)}
- G06T 1/00: General purpose image data processing
- G06T: IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A texture unit may be used utilized to perform general purpose mathematical computations such as dot products. This enables some general purpose computations and operations to be offloaded from a central processing unit to the texture unit. The texture unit may use linear interpolators in order to perform the dot product calculations.

## Claims

### Claim 1

A method comprising:
using a programmable linear interpolator in a texture unit to calculate a dot product;
determining that a dot product coefficient determined by the texture unit is negative and changing the sign of the coefficient to a positive value; and
compensating for the sign change by passing a control mask for each of the texels with a negative coefficient to a texture control and determining that one value in the mask means that the corresponding coefficient is positive and another value in the mask means that the corresponding coefficient is negative.

### Claim 2 (depends on 1)

The method of claim 1 including using a finite state machine sequencer to handle any sized dot product.

### Claim 3 (depends on 2)

The method of claim 2 wherein said state machine breaks up a larger dot product calculation into more than one smaller calculations.

### Claim 4 (depends on 3)

The method of claim 3 including breaking a sequence of dot product calculations into sub-blocks and transforming each sub-block into linear interpolation coefficients.

### Claim 5 (depends on 2)

The method of claim 2 including using a software sequencer finite state machine.

### Claim 6 (depends on 2)

The method of claim 2 including using a hardware sequencer finite state machine.

### Claim 7 (depends on 1)

The method of claim 1 including compensating for the sign change of the dot product coefficient by reversing the sign of the corresponding channel value during a filtering operation.

### Claim 8 (depends on 1)

The method of claim 1 including mapping a general N-element dot product to a tree of linear interpolators.

### Claim 9

An apparatus comprising:
a processing entity;
a memory coupled to said processing entity; and
a programmable linear interpolator coupled to said processing entity to calculate a dot product to determine that a dot product coefficient is negative and change the sign of the coefficient and compensate for the sign change by passing a control mask for each of the texels with a negative coefficient to a texture control and to determine that a mask having one value means that the corresponding coefficient is positive and the mask having another value means that the corresponding coefficient is negative.

### Claim 10 (depends on 9)

The apparatus of claim 9 including a finite state machine sequencer to handle any sized dot product.

### Claim 11 (depends on 10)

The apparatus of claim 10 wherein said sequencer to break up a dot product into a combination of smaller dot product operations.

### Claim 12 (depends on 11)

The apparatus of claim 11 wherein said sequencer to cycle through the dot product operations and accumulate a final result.

### Claim 13 (depends on 11)

The apparatus of claim 11 wherein said sequencer to pad an odd sized dot product to the next even sized dot product.

### Claim 14 (depends on 13)

The apparatus of claim 13 wherein said processing entity to execute a set up and accumulation operation, said set up operation to break coefficients into sub-blocks.

### Claim 15 (depends on 12)

The apparatus of claim 12, said processor to implement an accumulation step by performing a convolution using the transformed coefficients from said set up step.

### Claim 16 (depends on 15)

The apparatus of claim 15 wherein said sequencer finite state machine includes a filtering unit, said finite state machine to generate texture requests for each sub-dot product computation and to feed them to a texture pipeline.

### Claim 17 (depends on 13)

The apparatus of claim 13 including a scaling unit to perform multiplication of the final result by a scaling factor.

### Claim 18 (depends on 11)

The apparatus of claim 11 wherein said finite state machine sequencer to generate interpolator requests for each sub-dot product computation and to feed them to the interpolator.

### Claim 19 (depends on 9)

The apparatus of claim 9, including a tree of linear interpolators, a general N-element dot product mapped to said tree of linear interpolators.

### Claim 20

A non-transitory computer readable medium storing instructions to enable a computer to:
determine that a dot product coefficient determined by a texture unit is negative;
change the sign of the coefficient to a positive value; and
compensate for the sign change by passing a control mask for each of the texels with a negative coefficient to a texture control and to determine that a mask having one value means that the corresponding coefficient is positive and the mask having another value means that the corresponding coefficient is negative.

### Claim 21 (depends on 20)

The non-transitory medium of claim 20 further storing instructions to compensate for the sign change of the dot product coefficient by reversing the sign of the corresponding channel value during a filtering operation.
