IP Library Granted Patent US 8,217,953
Granted Patent B2
US 8,217,953 · App. 12/110,045 · Granted Jul 10, 2012

Anisotropic texture filtering with texture data prefetching

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 8,217,953
App. No.
12/110,045
Granted
Jul 10, 2012
Kind
B2
Abstract

A circuit arrangement and method utilize texture data prefetching to prefetch texture data used by an anisotropic filtering algorithm. In particular, stride-based prefetching may be used to prefetch texture data for use in anisotropic filtering, where the value of the stride, or difference between successive accesses, is based upon a distance in a memory address space between sample points taken along the line of anisotropy used in an anisotropic filtering algorithm.

Claims (36)

1. A method of performing anisotropic texture filtering using a texture defined in a texel coordinate system having u and v axes and a scene defined in a pixel coordinate system having x and y axes, the method comprising, for an initial sample point in the texture at u,v coordinates:

determining a line of anisotropy, including determining au, av values for the line of anisotropy as follows:

au =max( du/dx, du/dy )

av =max( dv/dx, dv/dy )

where du/dx is a ratio between texel coordinates along the u axis and pixel coordinates along the x axis, du/dy is a ratio between texel coordinates along the u axis and pixel coordinates along the y axis, dv/dx is a ratio between texel coordinates along the v axis and pixel coordinates along the x axis, and dv/dy is a ratio between texel coordinates along the v axis and pixel coordinates along the y axis;

determining n sample points along the line of anisotropy, including determining ui, vi coordinates for each sample point i, where i=0 to n−1, as follows:

ui=u +( i*au /( n− 1)− au/ 2)

vi=v +( i*av /( n− 1)− av/ 2)

determining a length ulen between adjacent sample points along the u axis and a length vlen between adjacent sample points along the v axis as follows:

u len= au /( n− 1)

v len= av /( n− 1)

determining a stride value as follows:

stride= v len*( Uw*D )+ u len* D

where Uw is a width of the texture in texels along the u axis and D is a data size for each texel in memory;

for each of the n sample points, loading texture data for such sample point and applying a filter to the first sample point using the loaded texture data for such sample point to generate a sample result;

for each of the n sample points after a first sample point, using the stride value to initiate a prefetch of the texture data for such sample point prior to attempting to load the texture data for such sample point; and

averaging the sample results for the n sample points.

2. A circuit arrangement, comprising:

a memory storage element; and

processing logic coupled to the memory storage element and configured to perform anisotropic texture filtering using a texture defined in a texel coordinate system having u and v axes and a scene defined in a pixel coordinate system having x and y axes, the processing logic configured to, for an initial sample point in the texture at u,v coordinates:

determine a line of anisotropy, including determine au, av values for the line of anisotropy as follows:

au =max( du/dx, du/dy )

av =max( dv/dx, dv/dy )

where du/dx is a ratio between texel coordinates along the u axis and pixel coordinates along the x axis, du/dy is a ratio between texel coordinates along the u axis and pixel coordinates along the y axis, dv/dx is a ratio between texel coordinates along the v axis and pixel coordinates along the x axis, and dv/dy is a ratio between texel coordinates along the v axis and pixel coordinates along the y axis;

determine n sample points along the line of anisotropy, including determine ui, vi coordinates for each sample point i, where i=0 to n−1, as follows:

ui=u +( i*au /( n− 1)− au/ 2)

vi=v +( i*av /( n− 1)− av/ 2)

determine a length ulen between adjacent sample points along the u axis and a length vlen between adjacent sample points along the v axis as follows:

u len= au /( n− 1)

v len= av /( n− 1)

determine a stride value as follows:

stride= v len*( Uw*D )+ u len* D

where Uw is a width of the texture in texels along the u axis and D is a data size for each texel in memory;

for each of the n sample points, load texture data for such sample point and apply a filter to the first sample point using the loaded texture data for such sample point to generate a sample result;

for each of the n sample points after a first sample point, use the stride value to initiate a prefetch of the texture data for such sample point prior to attempting to load the texture data for such sample point; and

average the sample results for the n sample points.

Assignments (4)
RELEASE OF SECURITY INTEREST Recorded Oct 17, 2016
From: BANK OF AMERICA, N.A.
To: ACTIVISION BLIZZARD INC.; ACTIVISION PUBLISHING, INC.; ACTIVISION ENTERTAINMENT HOLDINGS, INC.; BLIZZARD ENTERTAINMENT, INC.
Reel/Frame 040381/0487 →
SECURITY AGREEMENT Recorded Feb 11, 2014
From: ACTIVISION PUBLISHING, INC.
To: BANK OF AMERICA, N.A.
Reel/Frame 032240/0257 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 28, 2013
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: ACTIVISION PUBLISHING, INC.
Reel/Frame 029900/0285 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 25, 2008
From: COMPARAN, MIGUEL; MEJDRICH, ERIC OLIVER; MUFF, ADAM JAMES; TUBBS, MATTHEW RAY
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 020860/0218 →