IP Library Granted Patent US 9,483,843
Granted Patent B2
US 9,483,843 · App. 14/153,659 · Granted Nov 1, 2016

Method and system for expediting bilinear filtering

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,483,843
App. No.
14/153,659
Granted
Nov 1, 2016
Kind
B2
Abstract

The present document describes a method and system for expediting bilinear filtering of textures, by reducing the number of data load operations. The method expands the original data layout with additional borders containing replicated texels. The replicated texels correspond either to wrapped-around texels for two-dimensional textures or neighboring faces in cube textures. Therefore, a 2×2 filter kernel for bilinear filtering is built which requires only one texel address to be computed, with all texel data readable with two load operations which are a predetermined stride apart. Different addressing modes are implemented by adjusting the sampling locus.

Claims (44)

1. A computing system for expediting bilinear texture sampling of texture layouts comprising principal data including one or more rows and one or more columns of texels, the system comprising:

a memory;

a processing unit operably connected to the memory, the processing unit being adapted to:

receive sampling instructions identifying a first texture layout to sample from and a sampling point having coordinates near an edge of the principal data of the first texture layout;

modify the first texture layout, including adding at least one row or column of texels to a given edge of the principal data of the first texture layout, thereby creating a second texture layout;

set the closest four texels to the sampling point in the second texture layout as a filter kernel, wherein the four texels include two texels from the added row or column, and wherein two texels of the filter kernel are a stride apart from the remaining two texels;

sample the texels of the filter kernel using only two logical load operations; and

perform bilinear filtering on the sampled data of the four texels wherein the added row or column includes duplicate texels from an opposite edge of the principal data.

2. The computing system of claim 1 , wherein the first texture layout a two-dimensional image layout.

3. The computing system of claim 1 , wherein the first texture layout is a cube face layout of a cube texture.

4. The computing system of claim 1 , wherein the system is adapted to add rows or columns including texels of different mipmap levels for making the stride a power of two.

5. A computer implemented method for expediting bilinear texture sampling of two-dimensional texture layouts comprising principal data including one or more rows and one or more columns of texels, said method comprising:

receiving sampling instructions identifying a first texture layout to sample from and a sampling point having coordinates near an edge of the principal data of the first texture layout;

modifying the first texture layout, the modifying comprising adding at least one row or column of texels to a given edge of the principal data of the first texture layout, thereby creating a second texture layout;

setting the closest four texels to the sampling point in the second texture layout as a filter kernel, wherein the four texels include two texels from the added row or column, and wherein two texels of the filter kernel are a stride apart from the remaining two texels;

sampling the texels of the filter kernel using only two logical load operations; and

sending the sampled data for bilinear filtering;

wherein the modifying comprises filling the added row or column with one of: duplicate texels of an opposite edge of the principal data and texels of different mipmap levels.

6. The method of claim 5 , wherein the modifying further comprises making the stride a power of two.

7. The method of claim 5 , further comprising:

implementing a gatekeeper for updating the texels in the added row or column when texels of principal data change.

8. The method of claim 5 , further comprising: issuing pre-fetch instructions for locations around the filter kernel to reduce an effect of a larger stride on a processor's cache performance.

9. A computer implemented method for expediting bilinear texture sampling of cube textures comprising adjacent cube faces, each cube face having a texture layout including principal data comprising one or more rows and one or more columns of texels, said method comprising:

receiving sampling instructions identifying a first cube face of a given cube texture to sample from and a sampling point having coordinates near an edge of the principal data of a first texture layout corresponding to the first cube face;

modifying the first texture layout, the modifying comprising adding at least one row or column of texels to a given edge of the principal data of the first texture layout, thereby creating a second texture layout;

setting the closest four texels to the sampling point in the second texture layout as a filter kernel, wherein the four texels include two texels from the added row or column, and wherein two texels of the filter kernel are a stride apart from the remaining two texels;

sampling the texels of the filter kernel using only two logical load operations;

sending the sampled data for bilinear filtering; and

implementing a gatekeeper for updating the texels in the added row or column when texels of principal data change.

10. The method of claim 9 , wherein the modifying comprises filling the added row or column with duplicate texels of an adjacent row or column of an adjacent cube face.

11. The method of claim 9 , wherein modifying the first texture layout comprises adding an entire texture layout of a neighboring cube face to a corresponding edge of the first texture layout.

12. The method of claim 9 , wherein the modifying comprises adding one row and one column of texels to the principal data, and setting a corresponding corner texel between the added row and added column as an average value of corner texels of principal data of neighboring cube faces.

13. The method of claim 9 , further comprising: issuing pre-fetch instructions for locations around the filter kernel to reduce an effect of a larger stride on a processor's cache performance.

14. The method of claim 9 , wherein the modifying comprises filling the added row or column with texels of different mipmap levels.

15. The method of claim 14 , wherein the modifying further comprises making the stride a power of two.

16. A computing system for expediting bilinear texture sampling of texture layouts comprising principal data including one or more rows and one or more columns of texels, the system comprising:

a memory;

a processing unit operably connected to the memory, the processing unit being adapted to:

receive sampling instructions identifying a first texture layout to sample from and a sampling point having coordinates near an edge of the principal data of the first texture layout;

modify the first texture layout, including adding at least one row or column of texels to a given edge of the principal data of the first texture layout, thereby creating a second texture layout;

set the closest four texels to the sampling point in the second texture layout as a filter kernel, wherein the four texels include two texels from the added row or column, and wherein two texels of the filter kernel are a stride apart from the remaining two texels;

sample the texels of the filter kernel using only two logical load operations; and

perform bilinear filtering on the sampled data of the four texels;

wherein the system is adapted to add rows or columns including texels of different mipmap levels for making the stride a power of two.

Assignments (4)
CORRECTIVE ASSIGNMENT TO CORRECT THE THE REMOVAL OF THE INCORRECTLY RECORDED APPLICATION NUMBERS 14/149802 AND 15/419313 PREVIOUSLY RECORDED AT REEL: 44144 FRAME: 1. ASSIGNOR(S) HEREBY CONFIRMS THE CHANGE OF NAME. Recorded Mar 4, 2024
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 068092/0502 →
CHANGE OF NAME Recorded Oct 6, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044144/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 8, 2016
From: TRANSGAMING INC.
To: GOOGLE INC.
Reel/Frame 039980/0530 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 14, 2014
From: CAPENS, NICOLAS
To: TRANSGAMING INC.
Reel/Frame 032220/0590 →