[go: up one dir, main page]

US7697010B2 - Method and mechanism for programmable filtering of texture map data in 3D graphics subsystems - Google Patents

Method and mechanism for programmable filtering of texture map data in 3D graphics subsystems Download PDF

Info

Publication number
US7697010B2
US7697010B2 US12/260,057 US26005708A US7697010B2 US 7697010 B2 US7697010 B2 US 7697010B2 US 26005708 A US26005708 A US 26005708A US 7697010 B2 US7697010 B2 US 7697010B2
Authority
US
United States
Prior art keywords
texture
register
registers
filtering
processing module
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
US12/260,057
Other versions
US20090051697A1 (en
Inventor
Kim Pallister
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US11/515,110 external-priority patent/US7477261B2/en
Application filed by Intel Corp filed Critical Intel Corp
Priority to US12/260,057 priority Critical patent/US7697010B2/en
Publication of US20090051697A1 publication Critical patent/US20090051697A1/en
Priority to US12/688,594 priority patent/US20100118028A1/en
Application granted granted Critical
Publication of US7697010B2 publication Critical patent/US7697010B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping

Definitions

  • inventions of the invention relate to computer graphics. More specifically, embodiments of the invention relate to processing of texture map data.
  • Graphics applications and particularly three dimensionally (3D) graphics applications have long been one of the most processing intensive activities performed by personal computers.
  • graphics co-processors have proliferated and are widely available on most modern day personal computers.
  • Graphics coprocessors are specialized integrated circuits designed to quickly perform processing intensive tasks required by graphic applications.
  • Texture mapping is a process in which the one, two or three dimensional image representing an object surface properties (such as appearance, reflectivity, or other such properties) is applied to a three dimensional mesh representing the object in a final rendering. While a two dimensional image is most commonly used, other dimensionalities are possible.
  • FIG. 1A is a block diagram of a system of one embodiment of the invention.
  • FIG. 1B is a diagram of texture sampling in one embodiment of the invention.
  • FIG. 2 is a flow diagram of the setup of the textured filtering module in one embodiment of the invention.
  • FIG. 3 is a flow diagram of texture filtering in one embodiment of the invention.
  • FIG. 1A is a block diagram of a system of one embodiment of the invention.
  • a host processor 100 is coupled by a bus 102 to a memory 104 .
  • a graphics coprocessor 106 is also coupled to the bus 102 .
  • graphics coprocessor 106 may be coupled to memory 104 by an accelerated graphics port (AGP) 112 .
  • the AGP may adhere to Accelerated Graphics Port AGP V3.0 Interface Specification Rev. 1.0 published September 2002 (hereinafter the AGP Specification).
  • AGP 112 allows rapid access to graphics data residing in memory 104 .
  • framebuffer 108 and display 110 are also coupled to the bus.
  • framebuffer 108 may be contained within memory 104 .
  • Graphics coprocessor 106 includes pixel processing pipeline 120 .
  • Vertex processing module 122 receives vertex data, which may include, for example, 3D positional information, color information and other similar information related to vertices in the graphic image.
  • X, Y, Z are the three dimensional Cartesian coordinates of the vertex
  • T u and T v are the two dimensional coordinate of the corresponding texel in the texture map
  • RGB are the red, green and blue color values at the vertex.
  • Other forms and contents of vertex data are also contemplated.
  • Vertex processing module does three-dimensional transformations on 3D positional data conveyed, and may, for example, applies lighting.
  • the processed vertices are passed to the primitive assembly module, which receives connectivity data.
  • the connectivity data may include indices to permit assembly of primitives, typically triangles, based on the vertices and indices received.
  • fragment processing module 126 processes the primitives to identify fragments and apply texture data to build an output.
  • fragment refers to a pixel or group of contiguous pixels that are to be consistently processed to generate the output.
  • the fragment processing exchanges data relating to texture mapping the fragments with a texture filter module 130 .
  • texture filter module 130 communicates with fragment processing module 126 to supply texels for application to the pixels.
  • texture filter module 130 is programmable.
  • programmable is deemed to mean capable of executing a software program consisting of one or more instructions from a defined instruction set.
  • One example of an instruction set is set forth below in Table 1.
  • texture filter module 130 includes a plurality of texture processing cores (TPCs) 132 (16 TPC are shown in FIG. 1A ). Other embodiments may have more or fewer TPCs. In one embodiment, a single TPC exists. In one embodiment, each TPC 132 is capable of processing a pixel in parallel with each of the other TPC 132 . Each core 132 may be provided with a register set 134 which may include various types of registers such as control registers, source registers, temporary registers and an output register.
  • TPCs texture processing cores
  • control registers include a sampling register, a status register, an address register, an offset register, and a plurality of fraction registers.
  • the sampling register has one bit corresponding to each source registers indicating whether the source register should be sampled or not. For example, if there are sixteen source registers, the sampling register may be a sixteen bit register with one bit corresponding to each of the sixteen source registers.
  • the status register is used to indicate the status of the TPC after certain conditions, such as overflow, divide by zero, etc.
  • the address register may be a 32 bit register containing the address of the texture map data. In one embodiment, this register may be accessible only by an application programming interface (API) rather than providing direct access to a programmer.
  • API application programming interface
  • the offset register may be used to provide an offset into the texture data corresponding to the nearest texel coordinate.
  • Fraction registers may be used to hold the fractional coordinate between the texel samples in each dimensionality. In one embodiment, these would be provided by the fragment processing module 126 .
  • an eight pixel one dimensional texture coordinate of 0.175 would fall between the second (0.125) and third (0.25) texel. It would equate to a fraction of 0.2.
  • the fraction in this embodiment is found as (0.175-0.125)/0.125 or more generally, the coordinate less the closest lower increment divided by the increment value.
  • FIG. 1B is a diagram of texture sampling in one embodiment of the invention.
  • sixteen source registers are provided.
  • each register corresponding to one texel in a 4 ⁇ 4 grid surrounding the T u T v sampling location of the texture sample point and would correspond to pixels addressed in such a fashion.
  • T u T v may map to a location between texels 5 and 6 and texels 9 and 10
  • the contribution of the sixteen texels in the patch to the texture value assigned to T u T v may be defined by the texture filtering program.
  • only texels 5 , 6 , 9 and 10 provide a contribution.
  • all sixteen texels may contribute.
  • all diagonal pixels in the group may contribute.
  • the programmable nature of the texture filtering module permits robust and flexible texture filtering options.
  • Temporary registers may be provided for optional use by a programmer performing intermediate calculations on sample data.
  • An output register is provided to store the output once the filtering operation is complete.
  • a 32 bit register is provided to receive the final result. Larger registers may be employed, however, in some embodiments a 32 bit ARGB (alpha red green blue) value is deemed sufficient.
  • the actual filtering may be performed by the texture filtering module 130 by loading a desired filtering program into a textured processing core.
  • the filtering program corresponds to a fragment to be processed.
  • the filter program applied to a shiny part of a leather jacket on an image would likely to be different than the filter program applied to a scuffed part of a leather jacket.
  • the different effect can be accommodated.
  • the usage of several filter programs during the course of rendering a given scene image is analogous to how, under the current-day fixed-function schemes, the rendering of a given scene may involve switching between the different fixed-function filtering states for different parts of the scene.
  • texture data may be arranged in memory to optimize access to the texels likely to be sampled. For example, if the sampling register indicates every fourth texel value is active, the texture data may be stored so that points 1 , 5 , 9 and 13 are contiguous in memory, points 2 , 6 , 10 , etc. are contiguous. As another example, where every second texel is active, 1 , 3 , 5 , 7 , etc. are contiguous and 2 , 4 , 8 , etc. are contiguous. This arrangement in memory may be performed by the host processor 100 or the graphic coprocessor 106 .
  • Arranging memory requires a certain amount of processor resources, in one embodiment, a determination is made when the likely use of the texture data exceeds a threshold cost required to rearrange it. Thus, where the usage of the textured data justifies the cost to rearrange it, in one embodiment, the textured data is rearranged in memory to facilitate access.
  • the threshold may be selected based on objective guidelines such as number of texels to be processed with a given program.
  • the output value may then be passed back to fragment processing module 126 to permit the output fragment to be built.
  • the output built by the fragment processing module 126 is passed to framebuffer processing module 128 .
  • Framebuffer processing module 128 combines the pixels received with the existing framebuffer for output to display 110 .
  • FIG. 2 is a flow diagram of the setup of the textured filtering module in one embodiment of the invention.
  • a texture filter program is loaded into a texture processing core of the texture filtering module.
  • the sampling register is initialized to indicate the texels surrounding a sample point that will be sampled as part of the filtering process.
  • a determination is made if the texels to be sampled in conjunction with the number of samplings required justify reorganization of the texture data in memory. If so, the texture data is reordered for efficient access at functional block 208 . After reordering, or if no reordering is required, the address register is initialized at functional block 210 .
  • FIG. 3 is a flow diagram of texture filtering in one embodiment of the invention.
  • the texture filter fetches the coordinate data for pixels to be rendered from the vertex pipeline. In one embodiment, these will be fetched from the fragment processing module.
  • texel values identified from the sampling register are fetched from memory.
  • fraction registers are loaded with the coordinate data.
  • the texture processing cores are used to execute a filter program at functional block 308 .
  • a determination is made if the execution of the filter program necessitates setting of a status flag. If the execution requires the status flag such as a divide by zero or overflow, the status register is loaded with an appropriate value at functional block 312 .
  • the output value is loaded into the output register and the output is signaled to be available at functional block 314 .
  • decision block 316 a determination is made if there are more pixels to be rendered using the existing filter program. If so, a flow continues. If not, it ends.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)

Abstract

A system, method and apparatus to provide flexible texture filtering. A programmable texture filtering module is introduced into the graphics processing pipeline of a graphic coprocessor and graphic processor integrated with the host. A program from a defined instruction set may then be loaded into texture processing cores to process texture data consistent with the program.

Description

RELATED APPLICATION
This application is a continuation of U.S. Continuation application Ser. No. 11/515,110, now U.S. Pat. No. 7,477,261 filed Aug. 31, 2006 which is a continuation of U.S. patent application Ser. No. 10/872,049 filed Jun. 18, 2004, now U.S. Pat. No. 7,133,047, issued Nov. 7, 2006 which is a continuation of U.S. patent application Ser. No. 10/747,966, filed Dec. 29, 2003, now abandoned.
BACKGROUND
1. Field of the Invention
The embodiments of the invention relate to computer graphics. More specifically, embodiments of the invention relate to processing of texture map data.
2. Background
Graphics applications, and particularly three dimensionally (3D) graphics applications have long been one of the most processing intensive activities performed by personal computers. To improve graphics processing capabilities, graphics co-processors have proliferated and are widely available on most modern day personal computers. Graphics coprocessors are specialized integrated circuits designed to quickly perform processing intensive tasks required by graphic applications.
The transformation of scene information (source data) into 3D images (display output) requires a number of operations. These operations in aggregate are referred to as a 3D graphics rendering pipeline. The operations performed by the pipeline can be grouped into certain fundamental functionalities. One of these functionalities is texture mapping. Texture mapping is a process in which the one, two or three dimensional image representing an object surface properties (such as appearance, reflectivity, or other such properties) is applied to a three dimensional mesh representing the object in a final rendering. While a two dimensional image is most commonly used, other dimensionalities are possible.
It is frequently the case when a texture image is applied to an object in a final rendering, there is disparity between a number of sample texture elements (texels) and the source texture image and the number of picture elements (pixels) to which the image is mapped. When the number of texels in a given range is less than the number of pixels, then the texture is required to be upsampled. When upsampling a texture, a scheme must be used to fill intermediate values. This scheme is referred to herein as “texture filtering” and has largely been performed by a fixed function state machine.
Most current graphics coprocessor support four types of texture filtering; point sampling, bilinear filtering, trilinear filtering and anisotropic filtering. As the filtering methods become increasingly complex, the state machine required to perform them becomes increasingly complex and requires increased real estate within the graphics coprocessor. This coupled with the fact that uses for texture data continues to expand, for example, texture data is being used for lighting and other surface properties in addition to color, renders the commonly employed linear interpolation inefficient or even insufficient.
BRIEF DESCRIPTION OF THE DRAWINGS
Embodiments of the invention are illustrated by way of example and not by way of limitation in the figures of the accompanying drawings in which like references indicate similar elements. It should be noted that different references to “an” or “one” embodiment in this disclosure are not necessarily to the same embodiment, and such references mean at least one.
FIG. 1A is a block diagram of a system of one embodiment of the invention.
FIG. 1B is a diagram of texture sampling in one embodiment of the invention.
FIG. 2 is a flow diagram of the setup of the textured filtering module in one embodiment of the invention.
FIG. 3 is a flow diagram of texture filtering in one embodiment of the invention.
DETAILED DESCRIPTION
FIG. 1A is a block diagram of a system of one embodiment of the invention. A host processor 100 is coupled by a bus 102 to a memory 104. A graphics coprocessor 106 is also coupled to the bus 102. Additionally, graphics coprocessor 106 may be coupled to memory 104 by an accelerated graphics port (AGP) 112. The AGP may adhere to Accelerated Graphics Port AGP V3.0 Interface Specification Rev. 1.0 published September 2002 (hereinafter the AGP Specification). AGP 112 allows rapid access to graphics data residing in memory 104. Also coupled to the bus are framebuffer 108 and display 110. In some embodiments, framebuffer 108 may be contained within memory 104. Graphics coprocessor 106 includes pixel processing pipeline 120. Within the pixel processing pipeline 120 is a vertex processing module 122, primitive assembly module 124, a fragment processing module 126 and a framebuffer processing module 128. Vertex processing module 122 in operation receives vertex data, which may include, for example, 3D positional information, color information and other similar information related to vertices in the graphic image. In one embodiment, vertex data is of the form V=X, Y, Z, Tu, Tv, RGB. In this expression, X, Y, Z are the three dimensional Cartesian coordinates of the vertex, Tu and Tv are the two dimensional coordinate of the corresponding texel in the texture map and RGB are the red, green and blue color values at the vertex. Other forms and contents of vertex data are also contemplated.
Vertex processing module does three-dimensional transformations on 3D positional data conveyed, and may, for example, applies lighting. The processed vertices are passed to the primitive assembly module, which receives connectivity data. The connectivity data may include indices to permit assembly of primitives, typically triangles, based on the vertices and indices received.
The primitives are passed to the fragment processing module 126 which processes the primitives to identify fragments and apply texture data to build an output. As used herein, “fragment” refers to a pixel or group of contiguous pixels that are to be consistently processed to generate the output. The fragment processing exchanges data relating to texture mapping the fragments with a texture filter module 130.
The texture filter module 130 communicates with fragment processing module 126 to supply texels for application to the pixels. In one embodiment, texture filter module 130 is programmable. In this context, programmable is deemed to mean capable of executing a software program consisting of one or more instructions from a defined instruction set. One example of an instruction set is set forth below in Table 1.
TABLE 1
Instruction Description
ADD A, B Adds A and B operands
SUB A, B Subtracts B from A
MUL A, B Multiples A by B
RCP A, B Makes A the reciprocal of B
CMP A, B, X Compares A, B according to immediate X, places result
in A
MIN A, B Compares A, B leaves minimum of two values in A
MAX A, B Compares A, B leaves maximum of two values in A
MOV A, B Moves B into A
Alternative instruction sets, either shorter or longer, may be employed in various embodiments of the invention.
In one embodiment, texture filter module 130 includes a plurality of texture processing cores (TPCs) 132 (16 TPC are shown in FIG. 1A). Other embodiments may have more or fewer TPCs. In one embodiment, a single TPC exists. In one embodiment, each TPC 132 is capable of processing a pixel in parallel with each of the other TPC 132. Each core 132 may be provided with a register set 134 which may include various types of registers such as control registers, source registers, temporary registers and an output register.
In one embodiment, the control registers include a sampling register, a status register, an address register, an offset register, and a plurality of fraction registers. In one embodiment, the sampling register has one bit corresponding to each source registers indicating whether the source register should be sampled or not. For example, if there are sixteen source registers, the sampling register may be a sixteen bit register with one bit corresponding to each of the sixteen source registers. In one embodiment, the status register is used to indicate the status of the TPC after certain conditions, such as overflow, divide by zero, etc. In one embodiment, the address register may be a 32 bit register containing the address of the texture map data. In one embodiment, this register may be accessible only by an application programming interface (API) rather than providing direct access to a programmer. The offset register may be used to provide an offset into the texture data corresponding to the nearest texel coordinate. Fraction registers may be used to hold the fractional coordinate between the texel samples in each dimensionality. In one embodiment, these would be provided by the fragment processing module 126. In one embodiment above, where V=X, Y, Z, Tu, Tv, RGB; Tu and Tv correspond to a pixel to be texture mapped would be provided to the texture filtering module. As one example, an eight pixel one dimensional texture coordinate of 0.175 would fall between the second (0.125) and third (0.25) texel. It would equate to a fraction of 0.2. The fraction in this embodiment is found as (0.175-0.125)/0.125 or more generally, the coordinate less the closest lower increment divided by the increment value.
FIG. 1B is a diagram of texture sampling in one embodiment of the invention. In one embodiment, sixteen source registers are provided. In one embodiment, each register corresponding to one texel in a 4×4 grid surrounding the TuTv sampling location of the texture sample point and would correspond to pixels addressed in such a fashion. While TuTv may map to a location between texels 5 and 6 and texels 9 and 10, the contribution of the sixteen texels in the patch to the texture value assigned to TuTv may be defined by the texture filtering program. In some embodiments, only texels 5, 6, 9 and 10 provide a contribution. In other embodiments, all sixteen texels may contribute. In still other embodiments, all diagonal pixels in the group may contribute. As illustrated, the programmable nature of the texture filtering module permits robust and flexible texture filtering options.
Temporary registers may be provided for optional use by a programmer performing intermediate calculations on sample data. An output register is provided to store the output once the filtering operation is complete. In one embodiment, a 32 bit register is provided to receive the final result. Larger registers may be employed, however, in some embodiments a 32 bit ARGB (alpha red green blue) value is deemed sufficient.
The actual filtering may be performed by the texture filtering module 130 by loading a desired filtering program into a textured processing core. The filtering program corresponds to a fragment to be processed. Within a region of an image, it may be desirable to apply various effects to the texture data accordingly. Thus, for a particular graphic image, there may be numerous filtering programs employed.
For example, the filter program applied to a shiny part of a leather jacket on an image would likely to be different than the filter program applied to a scuffed part of a leather jacket. By using different programs in e texture filter module, the different effect can be accommodated. The usage of several filter programs during the course of rendering a given scene image is analogous to how, under the current-day fixed-function schemes, the rendering of a given scene may involve switching between the different fixed-function filtering states for different parts of the scene.
The program employed will influence which of the e.g. 16 texels are actually sampled to perform the texture filtering. In one embodiment, texture data may be arranged in memory to optimize access to the texels likely to be sampled. For example, if the sampling register indicates every fourth texel value is active, the texture data may be stored so that points 1, 5, 9 and 13 are contiguous in memory, points 2, 6, 10, etc. are contiguous. As another example, where every second texel is active, 1, 3, 5, 7, etc. are contiguous and 2, 4, 8, etc. are contiguous. This arrangement in memory may be performed by the host processor 100 or the graphic coprocessor 106.
Arranging memory requires a certain amount of processor resources, in one embodiment, a determination is made when the likely use of the texture data exceeds a threshold cost required to rearrange it. Thus, where the usage of the textured data justifies the cost to rearrange it, in one embodiment, the textured data is rearranged in memory to facilitate access. The threshold may be selected based on objective guidelines such as number of texels to be processed with a given program.
Once texture filtering is complete and the output generated, the output value may then be passed back to fragment processing module 126 to permit the output fragment to be built. The output built by the fragment processing module 126 is passed to framebuffer processing module 128. Framebuffer processing module 128 combines the pixels received with the existing framebuffer for output to display 110.
FIG. 2 is a flow diagram of the setup of the textured filtering module in one embodiment of the invention. At functional block 202, a texture filter program is loaded into a texture processing core of the texture filtering module. At functional block 204, the sampling register is initialized to indicate the texels surrounding a sample point that will be sampled as part of the filtering process. At decision block 206, a determination is made if the texels to be sampled in conjunction with the number of samplings required justify reorganization of the texture data in memory. If so, the texture data is reordered for efficient access at functional block 208. After reordering, or if no reordering is required, the address register is initialized at functional block 210.
FIG. 3 is a flow diagram of texture filtering in one embodiment of the invention. At functional block 302, the texture filter fetches the coordinate data for pixels to be rendered from the vertex pipeline. In one embodiment, these will be fetched from the fragment processing module. At functional block 304, texel values identified from the sampling register are fetched from memory. At functional block 306, fraction registers are loaded with the coordinate data. The texture processing cores are used to execute a filter program at functional block 308. At decision block 310, a determination is made if the execution of the filter program necessitates setting of a status flag. If the execution requires the status flag such as a divide by zero or overflow, the status register is loaded with an appropriate value at functional block 312. If no status flag is required, or after the status register has been loaded, the output value is loaded into the output register and the output is signaled to be available at functional block 314. At decision block 316, a determination is made if there are more pixels to be rendered using the existing filter program. If so, a flow continues. If not, it ends.
Although the above flow diagrams are arranged in a particular order, it should be understood that some of the operations may be performed in parallel or in a different order than depicted. Accordingly, such parallization or rearrangement is within the scope and contemplation of the embodiments of the invention. It should also be noted that while in only one embodiment, a single texture processing core may be present in the texture filter module, embodiments with multiple texture processing cores, pixels may be processed in parallel with each core following the flow depicted in FIG. 3.
In the foregoing specification, the invention has been described with reference to specific embodiments thereof. It will, however, be evident that various modifications and changes can be made thereto without departing from the broader spirit and scope of the invention as set forth in the appended claims. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.

Claims (5)

1. An apparatus comprising:
a fragment processing module;
a programmable texture filtering module in communication with the fragment processing module to programmably filter texture data corresponding to at least one pixel; and
a frame buffer processing module to combine filtered texture data with an existing frame buffer,
wherein the programmable texture filtering module includes a plurality of control registers, a plurality of source registers, a plurality of temporary registers, and at least one output register, and
where the plurality of the control registers include at least one sampling register having a bit corresponding to each of the source registers to indicate if sampling of a corresponding source register is required.
2. The apparatus of claim 1 wherein the source registers are read only.
3. The apparatus of claim 1 wherein the plurality of control registers comprises:
a status register;
an address register;
an offset register; and
a plurality of fraction registers.
4. The apparatus of claim 1 wherein the programmable texture filtering module comprises:
a plurality of processing cores to execute an instruction set.
5. The apparatus of claim 4 wherein a subset of the plurality of cores are to execute a filtering program on at least one pixel in parallel.
US12/260,057 2003-12-29 2008-10-28 Method and mechanism for programmable filtering of texture map data in 3D graphics subsystems Expired - Fee Related US7697010B2 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US12/260,057 US7697010B2 (en) 2003-12-29 2008-10-28 Method and mechanism for programmable filtering of texture map data in 3D graphics subsystems
US12/688,594 US20100118028A1 (en) 2003-12-29 2010-01-15 Method and Mechanism for Programmable Filtering of Texture Map Data in 3D Graphics Subsystems

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US10/747,966 US20050140688A1 (en) 2003-12-29 2003-12-29 Method and mechanism for programmable filtering of texture map data in 3D graphics subsystems
US10/872,049 US7133047B2 (en) 2003-12-29 2004-06-18 Method and mechanism for programmable filtering of texture map data in 3D graphics subsystems
US11/515,110 US7477261B2 (en) 2003-12-29 2006-08-31 Method and mechanism for programmable filtering of texture map data in 3D graphics subsystems
US12/260,057 US7697010B2 (en) 2003-12-29 2008-10-28 Method and mechanism for programmable filtering of texture map data in 3D graphics subsystems

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US11/515,110 Continuation US7477261B2 (en) 2003-12-29 2006-08-31 Method and mechanism for programmable filtering of texture map data in 3D graphics subsystems

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US12/688,594 Continuation US20100118028A1 (en) 2003-12-29 2010-01-15 Method and Mechanism for Programmable Filtering of Texture Map Data in 3D Graphics Subsystems

Publications (2)

Publication Number Publication Date
US20090051697A1 US20090051697A1 (en) 2009-02-26
US7697010B2 true US7697010B2 (en) 2010-04-13

Family

ID=34700817

Family Applications (4)

Application Number Title Priority Date Filing Date
US10/747,966 Abandoned US20050140688A1 (en) 2003-12-29 2003-12-29 Method and mechanism for programmable filtering of texture map data in 3D graphics subsystems
US10/872,049 Expired - Fee Related US7133047B2 (en) 2003-12-29 2004-06-18 Method and mechanism for programmable filtering of texture map data in 3D graphics subsystems
US12/260,057 Expired - Fee Related US7697010B2 (en) 2003-12-29 2008-10-28 Method and mechanism for programmable filtering of texture map data in 3D graphics subsystems
US12/688,594 Abandoned US20100118028A1 (en) 2003-12-29 2010-01-15 Method and Mechanism for Programmable Filtering of Texture Map Data in 3D Graphics Subsystems

Family Applications Before (2)

Application Number Title Priority Date Filing Date
US10/747,966 Abandoned US20050140688A1 (en) 2003-12-29 2003-12-29 Method and mechanism for programmable filtering of texture map data in 3D graphics subsystems
US10/872,049 Expired - Fee Related US7133047B2 (en) 2003-12-29 2004-06-18 Method and mechanism for programmable filtering of texture map data in 3D graphics subsystems

Family Applications After (1)

Application Number Title Priority Date Filing Date
US12/688,594 Abandoned US20100118028A1 (en) 2003-12-29 2010-01-15 Method and Mechanism for Programmable Filtering of Texture Map Data in 3D Graphics Subsystems

Country Status (2)

Country Link
US (4) US20050140688A1 (en)
CN (1) CN1910621B (en)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100118028A1 (en) * 2003-12-29 2010-05-13 Intel Corporation Method and Mechanism for Programmable Filtering of Texture Map Data in 3D Graphics Subsystems
US8970584B1 (en) 2011-06-24 2015-03-03 Nvidia Corporation Bounding box-based techniques for improved sample test efficiency in image rendering
US9142043B1 (en) 2011-06-24 2015-09-22 Nvidia Corporation System and method for improved sample test efficiency in image rendering
US9147270B1 (en) 2011-06-24 2015-09-29 Nvidia Corporation Bounding plane-based techniques for improved sample test efficiency in image rendering
US9159158B2 (en) 2012-07-19 2015-10-13 Nvidia Corporation Surface classification for point-based rendering within graphics display system
US9171394B2 (en) 2012-07-19 2015-10-27 Nvidia Corporation Light transport consistent scene simplification within graphics display system
US9269183B1 (en) 2011-07-31 2016-02-23 Nvidia Corporation Combined clipless time and lens bounds for improved sample test efficiency in image rendering
US9305394B2 (en) 2012-01-27 2016-04-05 Nvidia Corporation System and process for improved sampling for parallel light transport simulation
US9390202B2 (en) 2011-07-29 2016-07-12 Hexagon Metrology, Inc. Coordinate measuring system data reduction
US9460546B1 (en) 2011-03-30 2016-10-04 Nvidia Corporation Hierarchical structure for accelerating ray tracing operations in scene rendering

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005066895A2 (en) * 2003-12-29 2005-07-21 Intel Corporation Method and mechanism for programmable filtering of texture map data in 3d graphics subsystems
US7603506B2 (en) * 2004-06-18 2009-10-13 Broadcom Corporation Motherboard with video data processing card capability
US20050289523A1 (en) * 2004-06-24 2005-12-29 Broadcom Corporation Method and apparatus for transforming code of a non-proprietary program language into proprietary program language
US7612779B2 (en) * 2004-06-25 2009-11-03 Broadcom Corporation Video data processing circuits and systems comprising programmable blocks or components
US7813562B2 (en) 2004-09-27 2010-10-12 Intel Corporation Low-latency remote display rendering using tile-based rendering systems
US7586492B2 (en) * 2004-12-20 2009-09-08 Nvidia Corporation Real-time display post-processing using programmable hardware
US20080252652A1 (en) * 2007-04-13 2008-10-16 Guofang Jiao Programmable graphics processing element
KR100980449B1 (en) * 2007-12-17 2010-09-07 한국전자통신연구원 Parallel Global Lighting Rendering Method and System
CN102483860B (en) * 2009-06-10 2015-07-15 鹰图公司 Ontological filtering using spatial boundary of 3d objects
CN101840565B (en) * 2010-04-19 2011-09-21 浙江大学 A Parallel Construction Method of Octree Based on GPU
CN102413375A (en) * 2011-11-29 2012-04-11 康佳集团股份有限公司 Method and system for realizing video playing by using GPU
CN102678044B (en) * 2012-06-06 2014-05-07 浙江大学 Well drilling rod and pulse plasma drilling machine system
US9123167B2 (en) 2012-09-29 2015-09-01 Intel Corporation Shader serialization and instance unrolling
US8982124B2 (en) 2012-09-29 2015-03-17 Intel Corporation Load balancing and merging of tessellation thread workloads
US9035969B2 (en) * 2012-11-29 2015-05-19 Seiko Epson Corporation Method for multiple projector display using a GPU frame buffer
US9449363B2 (en) * 2014-06-27 2016-09-20 Intel Corporation Sampling, fault management, and/or context switching via a compute pipeline
CN106355632B (en) * 2016-08-30 2019-06-18 广联达科技股份有限公司 The filter method of rendering objects and the filter device of rendering objects
US10289393B2 (en) 2017-06-22 2019-05-14 Microsoft Technology Licensing, Llc GPU-executed program sequence cross-compilation
US10657698B2 (en) * 2017-06-22 2020-05-19 Microsoft Technology Licensing, Llc Texture value patch used in GPU-executed program sequence cross-compilation
US10241766B2 (en) 2017-06-22 2019-03-26 Microsoft Technology Licensing, Llc Application binary interface cross compilation
US10102015B1 (en) 2017-06-22 2018-10-16 Microsoft Technology Licensing, Llc Just in time GPU executed program cross compilation
GB2577619B (en) * 2018-04-05 2021-01-06 Imagination Tech Ltd Texture filtering with dynamic scheduling
US20210250468A1 (en) * 2018-08-21 2021-08-12 Hewlett-Packard Development Company, L.P. Interpolation and smoothening of the gamut boundary

Citations (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4835712A (en) 1986-04-14 1989-05-30 Pixar Methods and apparatus for imaging volume data with shading
US4897806A (en) 1985-06-19 1990-01-30 Pixar Pseudo-random point sampling techniques in computer graphics
US5025400A (en) 1985-06-19 1991-06-18 Pixar Pseudo-random point sampling techniques in computer graphics
US5239624A (en) 1985-06-19 1993-08-24 Pixar Pseudo-random point sampling techniques in computer graphics
JPH0877385A (en) 1994-08-29 1996-03-22 Internatl Business Mach Corp <Ibm> Computer graphics device
JPH08328951A (en) 1995-06-06 1996-12-13 Hewlett Packard Co <Hp> Data block management method
JPH09212658A (en) 1996-02-02 1997-08-15 Toshiba Corp Information processing device
US6333743B1 (en) 1997-10-23 2001-12-25 Silicon Graphics, Inc. Method and apparatus for providing image and graphics processing using a graphics rendering engine
US6366290B1 (en) * 1997-03-31 2002-04-02 Cirrus Logic, Inc. Dynamically selectable texture filter for a software graphics engine
US6452603B1 (en) 1998-12-23 2002-09-17 Nvidia Us Investment Company Circuit and method for trilinear filtering using texels from only one level of detail
WO2002103633A1 (en) 2001-06-19 2002-12-27 Nvidia Corporation System, method and computer program product for a programmable pixel processing model with instruction set
US20030234791A1 (en) 2002-06-20 2003-12-25 Boyd Charles N. Systems and methods for providing controllable texture sampling
US6731296B2 (en) 1999-05-07 2004-05-04 Broadcom Corporation Method and system for providing programmable texture processing
US20040227765A1 (en) 2003-05-16 2004-11-18 Emberling Brian D. Method for improving texture cache access by removing redundant requests
US6867778B2 (en) 2002-02-28 2005-03-15 Sun Microsystems, Inc. End point value correction when traversing an edge using a quantized slope value
US6999100B1 (en) 2000-08-23 2006-02-14 Nintendo Co., Ltd. Method and apparatus for anti-aliasing in a graphics system
US7133047B2 (en) 2003-12-29 2006-11-07 Intel Corporation Method and mechanism for programmable filtering of texture map data in 3D graphics subsystems
US7477261B2 (en) * 2003-12-29 2009-01-13 Intel Corporation Method and mechanism for programmable filtering of texture map data in 3D graphics subsystems

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2592042B1 (en) * 1985-12-19 1988-03-25 Ile De France NOVEL ORTHO-ANISAMIDES, PROCESS FOR OBTAINING THEM, AND THERAPEUTIC APPLICATIONS

Patent Citations (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4897806A (en) 1985-06-19 1990-01-30 Pixar Pseudo-random point sampling techniques in computer graphics
US5025400A (en) 1985-06-19 1991-06-18 Pixar Pseudo-random point sampling techniques in computer graphics
US5239624A (en) 1985-06-19 1993-08-24 Pixar Pseudo-random point sampling techniques in computer graphics
US4835712A (en) 1986-04-14 1989-05-30 Pixar Methods and apparatus for imaging volume data with shading
JPH0877385A (en) 1994-08-29 1996-03-22 Internatl Business Mach Corp <Ibm> Computer graphics device
JPH08328951A (en) 1995-06-06 1996-12-13 Hewlett Packard Co <Hp> Data block management method
JPH09212658A (en) 1996-02-02 1997-08-15 Toshiba Corp Information processing device
US6366290B1 (en) * 1997-03-31 2002-04-02 Cirrus Logic, Inc. Dynamically selectable texture filter for a software graphics engine
US6333743B1 (en) 1997-10-23 2001-12-25 Silicon Graphics, Inc. Method and apparatus for providing image and graphics processing using a graphics rendering engine
US6452603B1 (en) 1998-12-23 2002-09-17 Nvidia Us Investment Company Circuit and method for trilinear filtering using texels from only one level of detail
US6731296B2 (en) 1999-05-07 2004-05-04 Broadcom Corporation Method and system for providing programmable texture processing
US6999100B1 (en) 2000-08-23 2006-02-14 Nintendo Co., Ltd. Method and apparatus for anti-aliasing in a graphics system
WO2002103633A1 (en) 2001-06-19 2002-12-27 Nvidia Corporation System, method and computer program product for a programmable pixel processing model with instruction set
US6867778B2 (en) 2002-02-28 2005-03-15 Sun Microsystems, Inc. End point value correction when traversing an edge using a quantized slope value
US20030234791A1 (en) 2002-06-20 2003-12-25 Boyd Charles N. Systems and methods for providing controllable texture sampling
US20040227765A1 (en) 2003-05-16 2004-11-18 Emberling Brian D. Method for improving texture cache access by removing redundant requests
US7133047B2 (en) 2003-12-29 2006-11-07 Intel Corporation Method and mechanism for programmable filtering of texture map data in 3D graphics subsystems
US7477261B2 (en) * 2003-12-29 2009-01-13 Intel Corporation Method and mechanism for programmable filtering of texture map data in 3D graphics subsystems

Non-Patent Citations (9)

* Cited by examiner, † Cited by third party
Title
"State Machines", Dave Thomas, Andy Hunt, IEEE Software, vol. 19, No. 6, pp. 10-12, Nov./Dec. 2002. *
Dave Thomas, et al., State Machines, Ieee Software, vol. 19, No. 6, pp. 10-12, Nov./Dec. 2002.
Intel Corp., First Office Action dated Apr. 30, 2008, Chinese Application No. 200480039384.2 (PCT/US2004/043670), 11 pgs.
Intel Corporation Office Action dated Aug. 3, 2009 (for European Patent Application No. 04815685.5).
Intel Corporation Office Action dated Jul. 30, 2009 (for Japan Patent Application No. 2006-547482).
Intel Corporation, Office Action dated Jun. 26, 2009 (for Chinese Patent Application No. 200480039384.2).
Kaoru Sugita, et al., Performance Evaluation of Programmable Graphics Hardware for Image Filtering and Stereo Matching, VRST '03 Proc., Oct. 1-3, 2003, Osaka, Japan, pp. 176-183, XP-002336211.
McCool, Michael D. et al., "Texture Shaders"; 1999 Eurographics Los Angeles, CA; pp. 117-144.
Non-Final Office Action dated Feb. 29, 2008, U.S. Appl. No. 11/515,110, filed Aug. 31, 2006, 11 pgs.

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100118028A1 (en) * 2003-12-29 2010-05-13 Intel Corporation Method and Mechanism for Programmable Filtering of Texture Map Data in 3D Graphics Subsystems
US9460546B1 (en) 2011-03-30 2016-10-04 Nvidia Corporation Hierarchical structure for accelerating ray tracing operations in scene rendering
US8970584B1 (en) 2011-06-24 2015-03-03 Nvidia Corporation Bounding box-based techniques for improved sample test efficiency in image rendering
US9142043B1 (en) 2011-06-24 2015-09-22 Nvidia Corporation System and method for improved sample test efficiency in image rendering
US9147270B1 (en) 2011-06-24 2015-09-29 Nvidia Corporation Bounding plane-based techniques for improved sample test efficiency in image rendering
US9153068B2 (en) 2011-06-24 2015-10-06 Nvidia Corporation Clipless time and lens bounds for improved sample test efficiency in image rendering
US9390202B2 (en) 2011-07-29 2016-07-12 Hexagon Metrology, Inc. Coordinate measuring system data reduction
US9269183B1 (en) 2011-07-31 2016-02-23 Nvidia Corporation Combined clipless time and lens bounds for improved sample test efficiency in image rendering
US9305394B2 (en) 2012-01-27 2016-04-05 Nvidia Corporation System and process for improved sampling for parallel light transport simulation
US9159158B2 (en) 2012-07-19 2015-10-13 Nvidia Corporation Surface classification for point-based rendering within graphics display system
US9171394B2 (en) 2012-07-19 2015-10-27 Nvidia Corporation Light transport consistent scene simplification within graphics display system

Also Published As

Publication number Publication date
CN1910621A (en) 2007-02-07
US7133047B2 (en) 2006-11-07
US20100118028A1 (en) 2010-05-13
US20050140688A1 (en) 2005-06-30
US20050140689A1 (en) 2005-06-30
US20090051697A1 (en) 2009-02-26
CN1910621B (en) 2010-08-04

Similar Documents

Publication Publication Date Title
US7697010B2 (en) Method and mechanism for programmable filtering of texture map data in 3D graphics subsystems
US7477261B2 (en) Method and mechanism for programmable filtering of texture map data in 3D graphics subsystems
US7777750B1 (en) Texture arrays in a graphics library
EP0813721B1 (en) Hardware architecture for image generation and manipulation
US7928990B2 (en) Graphics processing unit with unified vertex cache and shader register file
CA2479931C (en) System, method and computer program product for generating a shader program
EP2047431B1 (en) Graphics processing unit with extended vertex cache
US8009172B2 (en) Graphics processing unit with shared arithmetic logic unit
US20080198168A1 (en) Efficient 2-d and 3-d graphics processing
US8395619B1 (en) System and method for transferring pre-computed Z-values between GPUs
US6828980B1 (en) System, method and computer program product for z-texture mapping
US7154507B1 (en) System, method and computer program product for texture shading
EP2122577A1 (en) Method, display adapter and computer program product for improved graphics performance by using a replaceable culling program
US6975317B2 (en) Method for reduction of possible renderable graphics primitive shapes for rasterization
US20250259261A1 (en) Input/Output Filter Unit for Graphics Processing Unit
US9530237B2 (en) Interpolation circuitry and techniques for graphics processing
US6943791B2 (en) Z-slope test to optimize sample throughput
US6927775B2 (en) Parallel box filtering through reuse of existing circular filter
WO2010046792A1 (en) Method of edge anti-aliasing a graphics geometry and a vectorgraphics processor for executing the same
US6847372B2 (en) Magnified texture-mapped pixel performance in a single-pixel pipeline
CN101393650A (en) Method for performing transparency to coverage conversion

Legal Events

Date Code Title Description
STCF Information on status: patent grant

Free format text: PATENTED CASE

FPAY Fee payment

Year of fee payment: 4

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552)

Year of fee payment: 8

FEPP Fee payment procedure

Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

LAPS Lapse for failure to pay maintenance fees

Free format text: PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

STCH Information on status: patent discontinuation

Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362

FP Lapsed due to failure to pay maintenance fee

Effective date: 20220413