Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
TILE-BASED SAMPLER SELECTION (TBSS)
Document Type and Number:
WIPO Patent Application WO/2022/186892
Kind Code:
A1
Abstract:
In some implementations, a method for processing 3D graphics data includes detecting edge information for a previous frame, the detecting based on rendered graphics data associated with the previous frame. Hint information is determined from the previous frame based on the edge information. The hint information indicates an amount of high-frequency information along a horizontal (X) axis and a vertical (Y) axis of an X-Y coordinate system in the rendered graphics data. Desired parameter values are determined for a set of parameters associated with a plurality of sampler data structures using the hint information. A sampler data structure is selected from the plurality of sampler data structures based on the desired parameter values. A current frame is rendered using the selected sampler data structure, the current frame being sequential to the previous frame.

Inventors:
LEE CHARLES (US)
Application Number:
PCT/US2021/070239
Publication Date:
September 09, 2022
Filing Date:
March 05, 2021
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
FUTUREWEI TECHNOLOGIES INC (US)
International Classes:
G06T15/04; G06T1/20; G06T15/00; G09G5/36
Foreign References:
US20200143550A12020-05-07
US20180284872A12018-10-04
EP3349181A12018-07-18
Attorney, Agent or Firm:
SCHEER, Bradley W. et al. (US)
Download PDF:
Claims:
CLAIMS

What is claimed is:

1. A computer-implemented method for processing three-dimensional (3D) graphics data, the method comprising: detecting edge information for a previous frame, the detecting based on rendered graphics data associated with the previous frame; determining hint information from the previous frame, the determining based on the edge information, the hint information indicating an amount of high-frequency information along a horizontal (X) axis and a vertical (Y) axis of an X-Y coordinate system in the rendered graphics data; determining using the hint information, desired parameter values for a set of parameters associated with a plurality of sampler data structures; selecting a sampler data structure from the plurality of sampler data structures, the selecting being based on the desired parameter values; and rendering a current frame using the selected sampler data structure, the current frame being sequential to the previous frame.

2. The computer-implemented method of claim 1, wherein the set of parameters includes a level of detail (LOD) parameter and an anisotropy parameter, the LOD parameter associated with texture resolution used in the current frame, and the anisotropy parameter associated with a maximum number of texture pixels (texels) to be read in a single direction during rendering of the current frame.

3. The computer-implemented method of claim 2, wherein the desired parameter values include a desired LOD value for the LOD parameter, and wherein the method further comprises: determining the desired LOD value based on a maximum high-frequency value derived from the amount of high-frequency information along the X-axis and the amount of high-frequency information along the Y-axis.

4. The computer-implemented method of claim 2, wherein the desired parameter values include a desired anisotropy value for the anisotropy parameter.

5. The computer-implemented method of claim 4, further comprising: determining an initial anisotropy value using U, V coordinates of a texture corresponding to the current frame and corresponding derivatives of the U, V coordinates, the U, V coordinates being associated with a U-V coordinate system of the texture; determining a plurality of modified anisotropy values corresponding to the initial anisotropy value based on a maximum high-frequency value, the plurality of modified anisotropy values being derived from the amount of high- frequency information along the X-axis and the amount of high-frequency information along the Y-axis, each modified anisotropy value of the plurality of modified anisotropy values corresponding to a threshold value of a corresponding plurality of threshold values associated with the maximum high- frequency value; and selecting a modified anisotropy value of the plurality of modified anisotropy values as the desired anisotropy value, the selecting based on the initial anisotropy value and the maximum high-frequency value.

6. The computer-implemented method of claim 5, further comprising: adjusting the maximum high-frequency value using a compensation factor, the compensation factor corresponding to a misalignment between U, V directions in the U-V coordinate system of the texture and X, Y directions in the X-Y coordinate system.

7. The computer-implemented method of claim 6, further comprising: determining a minimal high-frequency Boolean variable based on the amount of high-frequency information along the X-axis and the amount of high- frequency information along the Y-axis; and selecting a lowest anisotropy value as the desired anisotropy value based on the minimal high-frequency Boolean variable.

8. The computer-implemented method of claim 4, further comprising: rendering the current frame using the selected sampler data structure, wherein the rendering is based on performing anisotropic texturing of the current frame in accordance with the desired anisotropy value.

9. The computer-implemented method of claim 8, wherein the rendering includes performing the anisotropic texturing in a U-V coordinate system of a texture corresponding to the current frame.

10. The computer-implemented method of claim 9, further comprising: adjusting the desired anisotropy value based on the amount of high- frequency information along the X-axis and the amount of high-frequency information along the Y-axis; and reading the maximum number of texels along a U axis or along a V axis of the U-V coordinate system, the maximum number of texels associated with the adjusted desired anisotropy value.

11. The computer-implemented method of claim 2, further comprising: detecting a set of existing sampler data structures associated with a graphics processing application using the 3D graphics data, each existing sampler data structure of the set of existing sampler data structures includes the LOD parameter, the anisotropy parameter, and a mipmapping mode parameter associated with a number of texels to be read per pixel during the rendering of the current frame; and modifying one or more of the LOD parameter, the anisotropy parameter, and the mipmapping mode parameter for the set of existing sampler data structures to generate a set of new sampler data structures, the plurality of sampler data structures including the set of existing sampler data structures and the set of new sampler data structures.

12. The computer-implemented method of claim 2, wherein: the set of parameters further includes a mipmapping mode parameter associated with a number of texels to be read per pixel during the rendering of the current frame; and the desired parameter values include a desired mipmapping mode for the mipmapping mode parameter, the desired mipmapping mode including a Nearest mipmapping mode associated with reading a single texel per pixel during the rendering of the current frame, or a Linear mipmapping mode associated with reading multiple texels per pixel during the rendering of the current frame, the multiple texels associated with at least two mipmap levels.

13. The computer-implemented method of claim 12, wherein determining the hint information further comprises: determining a minimal high-frequency Boolean variable based on the amount of high-frequency information along the X-axis and the amount of high- frequency information along the Y-axis.

14. The computer-implemented method of claim 13, further comprising: selecting the Nearest mipmapping mode or the Linear mipmapping mode based on the minimal high-frequency Boolean variable.

15. The computer-implemented method of claim 1, further comprising: selecting the sampler data structure from the plurality of sampler data structures for each graphics triangle of a plurality of graphics triangles forming a tile of the current frame, wherein selecting the sampler data structure is based on a per-triangle modifier configured for each graphics triangle of the plurality of graphics triangles forming the tile of the current frame.

16. An apparatus for processing three-dimensional (3D) graphics data, the apparatus comprising: a memory storing instructions; and a tile-based sampler selection (TBSS) module in communication with the memory, the TBSS module comprising one or more processors configured to execute the instructions to: detect edge information for a previous frame, the detecting based on rendered graphics data associated with the previous frame; determine hint information from the previous frame, the determining based on the edge information, and the hint information indicating an amount of high-frequency information along a horizontal (X) axis and a vertical (Y) axis of an X-Y coordinate system in the rendered graphics data; determine using the hint information, desired parameter values for a set of parameters associated with a plurality of sampler data structures; select a sampler data structure from the plurality of sampler data structures, the selecting being based on the desired parameter values; and render a current frame using the selected sampler data structure, the current frame being sequential to the previous frame.

17. The apparatus of claim 16, wherein the set of parameters includes a level of detail (LOD) parameter and an anisotropy parameter, the LOD parameter associated with texture resolution used in the current frame, and the anisotropy parameter associated with a maximum number of texture pixels (texels) to be read in a single direction during rendering of the current frame.

18. The apparatus of claim 17, wherein the desired parameter values include a desired LOD value for the LOD parameter, and wherein the one or more processors are configured to execute the instructions to: determine the desired LOD value based on a maximum high-frequency value derived from the amount of high-frequency information along the X-axis and the amount of high-frequency information along the Y-axis.

19. The apparatus of any of claims 16-18, wherein the desired parameter values include a desired anisotropy value for the anisotropy parameter.

20. The apparatus of claim 19, wherein the one or more processors are configured to execute the instructions to: determine an initial anisotropy value using U, V coordinates of a texture corresponding to the current frame and corresponding derivatives of the U, V coordinates, the U, V coordinates being associated with a U-V coordinate system of the texture; determine a plurality of modified anisotropy values corresponding to the initial anisotropy value based on a maximum high-frequency value, the plurality of modified anisotropy values being derived from the amount of high-frequency information along the X-axis and the amount of high-frequency information along the Y-axis, each modified anisotropy value of the plurality of modified anisotropy values corresponding to a threshold value of a corresponding plurality of threshold values associated with the maximum high-frequency value; and store the plurality of modified anisotropy values and the corresponding plurality of threshold values associated with the maximum high-frequency value in a threshold values table.

21. The apparatus of claim 20, wherein the TBSS module comprises an X, Y Anisotropy module, the X, Y Anisotropy module configured to: receive the initial anisotropy value, the maximum high-frequency value, and the threshold values table; and select based on the initial anisotropy value and the maximum high- frequency value, a modified anisotropy value of the plurality of modified anisotropy values in the threshold values table as the desired anisotropy value.

22. The apparatus of claim 21, wherein the X, Y Anisotropy module is configured to: before selecting the modified anisotropy value, adjust the maximum high-frequency value using a compensation factor, the compensation factor corresponding to a misalignment between U, V directions in the U-V coordinate system of the texture and X, Y directions in the X-Y coordinate system.

23. The apparatus of any of claims 20-22, wherein the X, Y Anisotropy module is configured to: receive a minimal high-frequency Boolean variable, the minimal high- frequency Boolean variable based on the amount of high-frequency information along the X-axis and the amount of high-frequency information along the Y- axis; and select a lowest anisotropy value as the desired anisotropy value based on the minimal high-frequency Boolean variable.

24. The apparatus of any of claims 19-23, wherein the one or more processors are configured to execute the instructions to: render the current frame using the selected sampler data structure, wherein the rendering is based on performing anisotropic texturing of the current frame in accordance with the desired anisotropy value.

25. The apparatus of claim 24, wherein to render the current frame, the one or more processors are configured to execute the instructions to: perform the anisotropic texturing in a U-V coordinate system of a texture corresponding to the current frame.

26. The apparatus of claim 25, wherein the one or more processors are configured to execute the instructions to: adjust the desired anisotropy value based on the amount of high- frequency information along the X-axis and the amount of high-frequency information along the Y-axis; and read the maximum number of texels along a U axis or along a V axis of the U-V coordinate system, the maximum number of texels associated with the adjusted desired anisotropy value.

27. The apparatus of any of claims 17-26, wherein the one or more processors are configured to execute the instructions to: detect a set of existing sampler data structures associated with a graphics processing application using the 3D graphics data, each existing sampler data structure of the set of existing sampler data structures includes the LOD parameter, the anisotropy parameter, and a mipmapping mode parameter associated with a number of texels to be read per pixel during the rendering of the current frame; and modify one or more of the LOD parameter, the anisotropy parameter, and the mipmapping mode parameter for the set of existing sampler data structures to generate a set of new sampler data structures, the plurality of sampler data structures including the set of existing sampler data structures and the set of new sampler data structures.

28. The apparatus of any of claims 17-27, wherein: the set of parameters further includes a mipmapping mode parameter associated with a number of texels to be read per pixel during the rendering of the current frame; and the desired parameter values include a desired mipmapping mode for the mipmapping mode parameter, the desired mipmapping mode including a Nearest mipmapping mode associated with reading a single texel per pixel during the rendering of the current frame, or a Linear mipmapping mode associated with reading multiple texels per pixel during the rendering of the current frame, the multiple texels associated with at least two mipmap levels.

29. The apparatus of claim 28, wherein to determine the hint information, the one or more processors are configured to execute the instructions to: determine a minimal high-frequency Boolean variable based on the amount of high-frequency information along the X-axis and the amount of high- frequency information along the Y-axis.

30. The apparatus of claim 29, wherein the one or more processors are configured to execute the instructions to: selecting the Nearest mipmapping mode or the Linear mipmapping mode based on the minimal high-frequency Boolean variable.

31. The apparatus of claim 16, wherein the one or more processors are configured to execute the instructions to: selecting the sampler data structure from the plurality of sampler data structures for each graphics triangle of a plurality of graphics triangles forming a tile of the current frame, wherein selecting the sampler data structure is based on a per-triangle modifier configured for each graphics triangle of the plurality of graphics triangles forming the tile of the current frame.

32. A non-transitory computer-readable medium storing computer instruction for processing three-dimensional (3D) graphics data, wherein the instructions when executed by one or more processors, cause the one or more processors to perform operations comprising: detecting edge information for a previous frame, the detecting based on rendered graphics data associated with the previous frame; determining hint information from the previous frame, the determining based on the edge information, and the hint information indicating an amount of high-frequency information along a horizontal (X) axis and a vertical (Y) axis of an X-Y coordinate system in the rendered graphics data; determining using the hint information, desired parameter values for a set of parameters associated with a plurality of sampler data structures; selecting a sampler data structure from the plurality of sampler data structures, the selecting being based on the desired parameter values; and rendering a current frame using the selected sampler data structure, the current frame being sequential to the previous frame.

33. The computer-readable medium of claim 32, wherein the set of parameters includes a level of detail (LOD) parameter and an anisotropy parameter, the LOD parameter associated with texture resolution used in the current frame, and the anisotropy parameter associated with a maximum number of texture pixels (texels) to be read in a single direction during rendering of the current frame.

34. The computer-readable medium of claim 33, wherein the desired parameter values include a desired LOD value for the LOD parameter, and wherein executing the instructions further causes the one or more processors to perform operations comprising: determining the desired LOD value based on a maximum high-frequency value derived from the amount of high-frequency information along the X-axis and the amount of high-frequency information along the Y-axis.

35. The computer-readable medium of any of claims 32-34, wherein the desired parameter values include a desired anisotropy value for the anisotropy parameter.

36. The computer-readable medium of claim 35, wherein executing the instructions further causes the one or more processors to perform operations comprising: determining an initial anisotropy value using U, V coordinates of a texture corresponding to the current frame and corresponding derivatives of the U, V coordinates, the U, V coordinates being associated with a U-V coordinate system of the texture; determining a plurality of modified anisotropy values corresponding to the initial anisotropy value based on a maximum high-frequency value, the plurality of modified anisotropy values being derived from the amount of high- frequency information along the X-axis and the amount of high-frequency information along the Y-axis, each modified anisotropy value of the plurality of modified anisotropy values corresponding to a threshold value of a corresponding plurality of threshold values associated with the maximum high- frequency value; and selecting a modified anisotropy value of the plurality of modified anisotropy values as the desired anisotropy value, the selecting based on the initial anisotropy value and the maximum high-frequency value.

37. The computer-readable medium of claim 36, wherein executing the instructions further causes the one or more processors to perform operations comprising: adjusting the maximum high-frequency value using a compensation factor, the compensation factor corresponding to a misalignment between U, V directions in the U-V coordinate system of the texture and X, Y directions in the X-Y coordinate system.

38. The computer-readable medium of any of claims 35-37, wherein executing the instructions further causes the one or more processors to perform operations comprising: determining a minimal high-frequency Boolean variable based on the amount of high-frequency information along the X-axis and the amount of high- frequency information along the Y-axis; and selecting a lowest anisotropy value as the desired anisotropy value based on the minimal high-frequency Boolean variable.

39. The computer-readable medium of any of claims 35-38, wherein executing the instructions further causes the one or more processors to perform operations comprising: rendering the current frame using the selected sampler data structure, wherein the rendering is based on performing anisotropic texturing of the current frame in accordance with the desired anisotropy value.

40. The computer-readable medium of claim 39, wherein the rendering includes performing the anisotropic texturing in a U-V coordinate system of a texture corresponding to the current frame.

41. The computer-readable medium of claim 40, wherein executing the instructions further causes the one or more processors to perform operations comprising: adjusting the desired anisotropy value based on the amount of high- frequency information along the X-axis and the amount of high-frequency information along the Y-axis; and reading the maximum number of texels along a U axis or along a V axis of the U-V coordinate system, the maximum number of texels associated with the adjusted desired anisotropy value.

42. The computer-readable medium of any of claims 33-41, wherein executing the instructions further causes the one or more processors to perform operations comprising: detecting a set of existing sampler data structures associated with a graphics processing application using the 3D graphics data, each existing sampler data structure of the set of existing sampler data structures includes the LOD parameter, the anisotropy parameter, and a mipmapping mode parameter associated with a number of texels to be read per pixel during the rendering of the current frame; and modifying one or more of the LOD parameter, the anisotropy parameter, and the mipmapping mode parameter for the set of existing sampler data structures to generate a set of new sampler data structures, the plurality of sampler data structures including the set of existing sampler data structures and the set of new sampler data structures.

43. The computer-readable medium of any claims 33-42, wherein: the set of parameters further includes a mipmapping mode parameter associated with a number of texels to be read per pixel during the rendering of the current frame; and the desired parameter values include a desired mipmapping mode for the mipmapping mode parameter, the desired mipmapping mode including a Nearest mipmapping mode associated with reading a single texel per pixel during the rendering of the current frame, or a Linear mipmapping mode associated with reading multiple texels per pixel during the rendering of the current frame, the multiple texels associated with at least two mipmap levels.

44. The computer-readable medium of claim 43, wherein to determine the hint information, executing the instructions further causes the one or more processors to perform operations comprising: determining a minimal high-frequency Boolean variable based on the amount of high-frequency information along the X-axis and the amount of high- frequency information along the Y-axis.

45. The computer-readable medium of claim 44, wherein executing the instructions further causes the one or more processors to perform operations comprising: selecting the Nearest mipmapping mode or the Linear mipmapping mode based on the minimal high-frequency Boolean variable.

46. The computer-readable medium of claim 32, wherein executing the instructions further causes the one or more processors to perform operations comprising: selecting the sampler data structure from the plurality of sampler data structures for each graphics triangle of a plurality of graphics triangles forming a tile of the current frame, wherein selecting the sampler data structure is based on a per-triangle modifier configured for each graphics triangle of the plurality of graphics triangles forming the tile of the current frame.

47. An apparatus for processing three-dimensional (3D) graphics data, the apparatus comprising: an edge detection module for detecting edge information for a previous frame, the detecting based on rendered graphics data associated with the previous frame; a hint determination module for determining hint information from the previous frame, the determining based on the edge information, the hint information indicating an amount of high-frequency information along a horizontal (X) axis and a vertical (Y) axis of an X-Y coordinate system in the rendered graphics data; a parameter value determination module for determining using the hint information, desired parameter values for a set of parameters associated with a plurality of sampler data structures; a selection module for selecting a sampler data structure from the plurality of sampler data structures, the selecting being based on the desired parameter values; and a rendering module for rendering a current frame using the selected sampler data structure, the current frame being sequential to the previous frame.

Description:
TILE-BASED SAMPLER SELECTION (TBSS)

TECHNICAL FIELD

[0001] The present disclosure is related to the processing of three- dimensional (3D) graphics data in mobile devices.

BACKGROUND

[0002] Graphics Processing Units (GPUs) of mobile devices have a bandwidth bottleneck in reading texture pixels (texels) while rendering 3D graphics data. More specifically, texels reside in off-chip memory, and reads from that memory are associated with significant power consumption. Additionally, a mobile device GPU computes a standard level-of-detail (LOD) for a texture -based upon the screen-space shape of a rendered graphics triangle and its texture coordinates. However, rendering of the 3D graphics data based upon this standard LOD can be sub-optimal.

SUMMARY

[0003] Various examples are now described to introduce a selection of concepts in a simplified form, which are further described below in the detailed description. The Summary is not intended to identify key or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.

[0004] According to a first aspect of the present disclosure, there is provided a computer-implemented method for processing 3D graphics data. The method includes detecting edge information for a previous frame, the detecting based on rendered graphics data associated with the previous frame. Hint information is determined from the previous frame. The determining is based on the edge information. The hint information indicates an amount of high- frequency information along a horizontal (X) axis and a vertical (Y) axis of an X-Y coordinate system in the rendered graphics data. Desired parameter values for a set of parameters associated with a plurality of sampler data structures are determined using the hint information. A sampler data structure is selected from the plurality of sampler data structures, the selection is based on the desired parameter values. A current frame is rendered using the selected sampler data structure, the current frame being sequential to the previous frame.

[0005] In a first implementation form of the method according to the first aspect as such, the set of parameters includes a level of detail (LOD) parameter and an anisotropy parameter. The LOD parameter is associated with texture resolution used in the current frame, and the anisotropy parameter is associated with a maximum number of texture pixels (texels) to be read in a single direction during rendering of the current frame.

[0006] In a second implementation form of the method according to the first aspect as such or any implementation form of the first aspect, the desired parameter values include a desired LOD value for the LOD parameter. The method further includes determining the desired LOD value based on a maximum high-frequency value derived from the amount of high-frequency information along the X-axis and the amount of high-frequency information along the Y-axis.

[0007] In a third implementation form of the method according to the first aspect as such or any implementation form of the first aspect, the desired parameter values include a desired anisotropy value for the anisotropy parameter.

[0008] In a fourth implementation form of the method according to the first aspect as such or any implementation form of the first aspect, an initial anisotropy value is determined using U, V coordinates of a texture corresponding to the current frame and corresponding derivatives of the U, V coordinates, the U, V coordinates being associated with a U-V coordinate system of the texture. A plurality of modified anisotropy values corresponding to the initial anisotropy value is determined based on a maximum high-frequency value, the plurality of modified anisotropy values being derived from the amount of high-frequency information along the X-axis and the amount of high- frequency information along the Y-axis. Each modified anisotropy value of the plurality of modified anisotropy values corresponds to a threshold value of a corresponding plurality of threshold values associated with the maximum high- frequency value. A modified anisotropy value of the plurality of modified anisotropy values is selected as the desired anisotropy value, the selection based on the initial anisotropy value and the maximum high-frequency value.

[0009] In a fifth implementation form of the method according to the first aspect as such or any implementation form of the first aspect, the maximum high-frequency value is adjusted using a compensation factor, the compensation factor corresponding to a misalignment between U, V directions in the U-V coordinate system of the texture and X, Y directions in the X-Y coordinate system.

[0010] In a sixth implementation form of the method according to the first aspect as such or any implementation form of the first aspect, a minimal high-frequency Boolean variable is determined based on the amount of high- frequency information along the X-axis and the amount of high-frequency information along the Y-axis. The lowest anisotropy value is selected as the desired anisotropy value based on the minimal high-frequency Boolean variable.

[0011] In a seventh implementation form of the method according to the first aspect as such or any implementation form of the first aspect, the current frame is rendered using the selected sampler data structure. The rendering is based on performing anisotropic texturing of the current frame in accordance with the desired anisotropy value.

[0012] In an eighth implementation form of the method according to the first aspect as such or any implementation form of the first aspect, the rendering includes performing the anisotropic texturing in a U-V coordinate system of a texture corresponding to the current frame.

[0013] In a ninth implementation form of the method according to the first aspect as such or any implementation form of the first aspect, the desired anisotropy value is adjusted based on the amount of high-frequency information along the X-axis and the amount of high-frequency information along the Y- axis. The maximum number of texels along a U axis or a V axis of the U-V coordinate system are read, the maximum number of texels associated with the adjusted desired anisotropy value.

[0014] In a tenth implementation form of the method according to the first aspect as such or any implementation form of the first aspect, a set of existing sampler data structures associated with a graphics processing application is detected using the 3D graphics data. Each existing sampler data structure of the set of existing sampler data structures includes the LOD parameter, the anisotropy parameter, and a mipmapping mode parameter associated with a number of texels to be read per pixel during the rendering of the current frame. One or more of the LOD parameter, the anisotropy parameter, and the mipmapping mode parameter for the set of existing sampler data structures are modified to generate a set of new sampler data structures, the plurality of sampler data structures including the set of existing sampler data structures and the set of new sampler data structures.

[0015] In an eleventh implementation form of the method according to the first aspect as such or any implementation form of the first aspect, the set of parameters further includes a mipmapping mode parameter associated with a number of texels to be read per pixel during the rendering of the current frame. The desired parameter values include a desired mipmapping mode for the mipmapping mode parameter, the desired mipmapping mode including a Nearest mipmapping mode associated with reading a single texel per pixel during the rendering of the current frame, or a Linear mipmapping mode associated with reading multiple texels per pixel during the rendering of the current frame, the multiple texels associated with at least two mipmap levels.

[0016] In a twelfth implementation form of the method according to the first aspect as such or any implementation form of the first aspect, determining the hint information further includes determining a minimal high-frequency Boolean variable based on the amount of high-frequency information along the X-axis and the amount of high-frequency information along the Y-axis.

[0017] In a thirteenth implementation form of the method according to the first aspect as such or any implementation form of the first aspect, the Nearest mipmapping mode or the Linear mipmapping mode is selected based on the minimal high-frequency Boolean variable.

[0018] In a fourteenth implementation form of the method according to the first aspect as such or any implementation form of the first aspect, the sampler data structure is selected from the plurality of sampler data structures for each graphics triangle of a plurality of graphics triangles forming a tile of the current frame. Selecting the sampler data structure is based on a per-triangle modifier configured for each graphics triangle of the plurality of graphics triangles forming the tile of the current frame.

[0019] According to a second aspect of the present disclosure, there is provided an apparatus for processing 3D graphics data. The apparatus includes memory storing instructions and a tile-based sampler selection (TBSS) module in communication with the memory. The TBSS module includes one or more processors configured to execute the instructions to detect edge information for a previous frame, the detecting based on rendered graphics data associated with the previous frame. Hint information from the previous frame is determined.

The determining is based on the edge information, and the hint information indicating an amount of high-frequency information along a horizontal (X) axis and a vertical (Y) axis of an X-Y coordinate system in the rendered graphics data. Desired parameter values for a set of parameters associated with a plurality of sampler data structures are determined using the hint information. A sampler data structure is selected from the plurality of sampler data structures, the selection is based on the desired parameter values. A current frame is rendered using the selected sampler data structure, the current frame being sequential to the previous frame.

[0020] In a first implementation form of the apparatus according to the second aspect as such, the set of parameters includes a level of detail (LOD) parameter and an anisotropy parameter. The LOD parameter is associated with texture resolution used in the current frame, and the anisotropy parameter is associated with a maximum number of texture pixels (texels) to be read in a single direction during rendering of the current frame.

[0021] In a second implementation form of the apparatus according to the second aspect as such or any implementation form of the second aspect, the desired parameter values include a desired LOD value for the LOD parameter. The one or more processors are configured to execute the instructions to determine the desired LOD value based on a maximum high-frequency value derived from the amount of high-frequency information along the X-axis and the amount of high-frequency information along the Y-axis. [0022] In a third implementation form of the apparatus according to the second aspect as such or any implementation form of the second aspect, the desired parameter values include a desired anisotropy value for the anisotropy parameter.

[0023] In a fourth implementation form of the apparatus according to the second aspect as such or any implementation form of the second aspect, the one or more processors are configured to execute the instructions to determine an initial anisotropy value using U, V coordinates of a texture corresponding to the current frame and corresponding derivatives of the U, V coordinates, the U, V coordinates being associated with a U-V coordinate system of the texture. A plurality of modified anisotropy values corresponding to the initial anisotropy value is determined based on a maximum high-frequency value, the plurality of modified anisotropy values being derived from the amount of high-frequency information along the X-axis and the amount of high-frequency information along the Y-axis, each modified anisotropy value of the plurality of modified anisotropy values corresponding to a threshold value of a corresponding plurality of threshold values associated with the maximum high-frequency value. The plurality of modified anisotropy values and the corresponding plurality of threshold values associated with the maximum high-frequency value is stored in a threshold values table.

[0024] In a fifth implementation form of the apparatus according to the second aspect as such or any implementation form of the second aspect, the TBSS module includes an X, Y Anisotropy module. The X, Y Anisotropy module is configured to receive the initial anisotropy value, the maximum high- frequency value, and the threshold values table. The X, Y Anisotropy module is further configured to select based on the initial anisotropy value and the maximum high-frequency value, a modified anisotropy value of the plurality of modified anisotropy values in the threshold values table as the desired anisotropy value.

[0025] In a sixth implementation form of the apparatus according to the second aspect as such or any implementation form of the second aspect, the X, Y Anisotropy module is configured to, before selecting the modified anisotropy value, adjust the maximum high-frequency value using a compensation factor. The compensation factor corresponds to a misalignment between U, V directions in the U-V coordinate system of the texture and X, Y directions in the X-Y coordinate system.

[0026] In a seventh implementation form of the apparatus according to the second aspect as such or any implementation form of the second aspect, the X, Y Anisotropy module is configured to receive a minimal high-frequency Boolean variable. The minimal high-frequency Boolean variable is based on the amount of high-frequency information along the X-axis and the amount of high- frequency information along the Y-axis. The lowest anisotropy value is selected as the desired anisotropy value based on the minimal high-frequency Boolean variable.

[0027] In an eighth implementation form of the apparatus according to the second aspect as such or any implementation form of the second aspect, the one or more processors are configured to execute the instructions to render the current frame using the selected sampler data structure. The rendering is based on performing anisotropic texturing of the current frame in accordance with the desired anisotropy value.

[0028] In a ninth implementation form of the apparatus according to the second aspect as such or any implementation form of the second aspect, to render the current frame, the one or more processors are configured to execute the instructions to perform the anisotropic texturing in a U-V coordinate system of a texture corresponding to the current frame.

[0029] In a tenth implementation form of the apparatus according to the second aspect as such or any implementation form of the second aspect, the one or more processors are configured to execute the instructions to adjust the desired anisotropy value based on the amount of high-frequency information along the X-axis and the amount of high-frequency information along the Y- axis. The maximum number of texels are read along a U axis or along a V axis of the U-V coordinate system, the maximum number of texels associated with the adjusted desired anisotropy value.

[0030] In an eleventh implementation form of the apparatus according to the second aspect as such or any implementation form of the second aspect, the one or more processors are configured to execute the instructions to detect a set of existing sampler data structures associated with a graphics processing application using the 3D graphics data. Each existing sampler data structure of the set of existing sampler data structures includes the LOD parameter, the anisotropy parameter, and a mipmapping mode parameter associated with a number of texels to be read per pixel during the rendering of the current frame. One or more of the LOD parameter, the anisotropy parameter, and the mipmapping mode parameter for the set of existing sampler data structures are modified to generate a set of new sampler data structures, the plurality of sampler data structures including the set of existing sampler data structures and the set of new sampler data structures.

[0031] In a twelfth implementation form of the apparatus according to the second aspect as such or any implementation form of the second aspect, the set of parameters further includes a mipmapping mode parameter associated with a number of texels to be read per pixel during the rendering of the current frame. The desired parameter values include a desired mipmapping mode for the mipmapping mode parameter. The desired mipmapping mode includes a Nearest mipmapping mode associated with reading a single texel per pixel during the rendering of the current frame or a Linear mipmapping mode associated with reading multiple texels per pixel during the rendering of the current frame, the multiple texels associated with at least two mipmap levels.

[0032] In a thirteenth implementation form of the apparatus according to the second aspect as such or any implementation form of the second aspect, to determine the hint information, the one or more processors are configured to execute the instructions to determine a minimal high-frequency Boolean variable based on the amount of high-frequency information along the X-axis and the amount of high-frequency information along the Y-axis.

[0033] In a fourteenth implementation form of the apparatus according to the second aspect as such or any implementation form of the second aspect, the one or more processors are configured to execute the instructions to select the Nearest mipmapping mode or the Linear mipmapping mode based on the minimal high-frequency Boolean variable. [0034] In a fifteenth implementation form of the apparatus according to the second aspect as such or any implementation form of the second aspect, the one or more processors are configured to execute the instructions to select the sampler data structure from the plurality of sampler data structures for each graphics triangle of a plurality of graphics triangles forming a tile of the current frame. Selecting the sampler data structure is based on a per-triangle modifier configured for each graphics triangle of the plurality of graphics triangles forming the tile of the current frame.

[0035] According to a third aspect of the present disclosure, there is provided a non-transitory computer-readable medium storing instructions for processing 3D graphics data. When executed by one or more processors of a computing device, the instructions cause the one or more processors to perform operations including detecting edge information for a previous frame, the detecting based on rendered graphics data associated with the previous frame. Hint information from the previous frame is determined based on the edge information. The hint information indicates an amount of high-frequency information along a horizontal (X) axis and a vertical (Y) axis of an X-Y coordinate system in the rendered graphics data. Desired parameter values for a set of parameters associated with a plurality of sampler data structures are determined using the hint information. A sampler data structure is selected from the plurality of sampler data structures, the selection is based on the desired parameter values. A current frame is rendered using the selected sampler data structure, the current frame being sequential to the previous frame.

[0036] In a first implementation form of the computer-readable medium according to the third aspect as such, the set of parameters includes a level of detail (LOD) parameter and an anisotropy parameter. The LOD parameter is associated with texture resolution used in the current frame, and the anisotropy parameter is associated with a maximum number of texture pixels (texels) to be read in a single direction during rendering of the current frame.

[0037] In a second implementation form of the computer-readable medium according to the third aspect as such or any implementation form of the third aspect, the desired parameter values include a desired LOD value for the LOD parameter. Executing the instructions further causes the one or more processors to perform operations including determining the desired LOD value based on a maximum high-frequency value derived from the amount of high- frequency information along the X-axis and the amount of high-frequency information along the Y-axis.

[0038] In a third implementation form of the computer-readable medium according to the third aspect as such or any implementation form of the third aspect, the desired parameter values include a desired anisotropy value for the anisotropy parameter.

[0039] In a fourth implementation form of the computer-readable medium according to the third aspect as such or any implementation form of the third aspect, executing the instructions further causes the one or more processors to perform operations including determining an initial anisotropy value using U, V coordinates of a texture corresponding to the current frame and corresponding derivatives of the U, V coordinates, the U, V coordinates being associated with a U-V coordinate system of the texture. A plurality of modified anisotropy values corresponding to the initial anisotropy value is determined based on a maximum high-frequency value, the plurality of modified anisotropy values being derived from the amount of high-frequency information along the X-axis and the amount of high-frequency information along the Y-axis. Each modified anisotropy value of the plurality of modified anisotropy values corresponds to a threshold value of a corresponding plurality of threshold values associated with the maximum high- frequency value. A modified anisotropy value of the plurality of modified anisotropy values is selected as the desired anisotropy value, the selection based on the initial anisotropy value and the maximum high-frequency value.

[0040] In a fifth implementation form of the computer-readable medium according to the third aspect as such or any implementation form of the third aspect, executing the instructions further causes the one or more processors to perform operations including adjusting the maximum high-frequency value using a compensation factor. The compensation factor corresponds to a misalignment between U, V directions in the U-V coordinate system of the texture and X, Y directions in the X-Y coordinate system.

[0041] In a sixth implementation form of the computer-readable medium according to the third aspect as such or any implementation form of the third aspect, executing the instructions further causes the one or more processors to perform operations including determining a minimal high-frequency Boolean variable based on the amount of high-frequency information along the X-axis and the amount of high-frequency information along the Y-axis. The lowest anisotropy value is selected as the desired anisotropy value based on the minimal high-frequency Boolean variable.

[0042] In a seventh implementation form of the computer-readable medium according to the third aspect as such or any implementation form of the third aspect, executing the instructions further causes the one or more processors to perform operations including rendering the current frame using the selected sampler data structure. The rendering is based on performing anisotropic texturing of the current frame in accordance with the desired anisotropy value.

[0043] In an eighth implementation form of the computer-readable medium according to the third aspect as such or any implementation form of the third aspect, the rendering includes performing the anisotropic texturing in a U- V coordinate system of a texture corresponding to the current frame.

[0044] In a ninth implementation form of the computer-readable medium according to the third aspect as such or any implementation form of the third aspect, executing the instructions further causes the one or more processors to perform operations including adjusting the desired anisotropy value based on the amount of high-frequency information along the X-axis and the amount of high- frequency information along the Y-axis. The maximum number of texels are read along a U axis or along a V axis of the U-V coordinate system, the maximum number of texels associated with the adjusted desired anisotropy value.

[0045] In a tenth implementation form of the computer-readable medium according to the third aspect as such or any implementation form of the third aspect, executing the instructions further causes the one or more processors to perform operations including detecting a set of existing sampler data structures associated with a graphics processing application using the 3D graphics data. Each existing sampler data structure of the set of existing sampler data structures includes the LOD parameter, the anisotropy parameter, and a mipmapping mode parameter associated with a number of texels to be read per pixel during the rendering of the current frame. One or more of the LOD parameter, the anisotropy parameter, and the mipmapping mode parameter for the set of existing sampler data structures are modified to generate a set of new sampler data structures. The plurality of sampler data structures includes the set of existing sampler data structures and the set of new sampler data structures.

[0046] In an eleventh implementation form of the computer-readable medium according to the third aspect as such or any implementation form of the third aspect, the set of parameters further includes a mipmapping mode parameter associated with a number of texels to be read per pixel during the rendering of the current frame. The desired parameter values include a desired mipmapping mode for the mipmapping mode parameter. The desired mipmapping mode includes a Nearest mipmapping mode associated with reading a single texel per pixel during the rendering of the current frame or a Linear mipmapping mode associated with reading multiple texels per pixel during the rendering of the current frame, the multiple texels associated with at least two mipmap levels.

[0047] In a twelfth implementation form of the computer-readable medium according to the third aspect as such or any implementation form of the third aspect, to determine the hint information, executing the instructions further causes the one or more processors to perform operations including determining a minimal high-frequency Boolean variable based on the amount of high- frequency information along the X-axis and the amount of high-frequency information along the Y-axis.

[0048] In a thirteenth implementation form of the computer-readable medium according to the third aspect as such or any implementation form of the third aspect, executing the instructions further causes the one or more processors to perform operations including selecting the Nearest mipmapping mode or the Linear mipmapping mode based on the minimal high-frequency Boolean variable.

[0049] In a fourteenth implementation form of the computer-readable medium according to the third aspect as such or any implementation form of the third aspect, executing the instructions further causes the one or more processors to perform operations including selecting the sampler data structure from the plurality of sampler data structures for each graphics triangle of a plurality of graphics triangles forming a tile of the current frame. Selecting the sampler data structure is based on a per-triangle modifier configured for each graphics triangle of the plurality of graphics triangles forming the tile of the current frame.

[0050] According to a fourth aspect of the present disclosure, there is provided an apparatus for processing 3D graphics data. The apparatus includes an edge detection module for detecting edge information for a previous frame, the detecting based on rendered graphics data associated with the previous frame. The apparatus further includes a hint determination module for determining hint information from the previous frame. The determining is based on the edge information, the hint information indicating an amount of high- frequency information along a horizontal (X) axis and a vertical (Y) axis of an X-Y coordinate system in the rendered graphics data. The apparatus further includes a parameter value determination module for determining using the hint information, desired parameter values for a set of parameters associated with a plurality of sampler data structures. The apparatus further includes a selection module for selecting a sampler data structure from the plurality of sampler data structures, the selection is based on the desired parameter values. The apparatus further includes a rendering module for rendering a current frame using the selected sampler data structure, the current frame being sequential to the previous frame.

[0051] Any of the foregoing examples may be combined with any one or more of the other foregoing examples to create a new embodiment within the scope of the present disclosure.

BRIEF DESCRIPTION OF THE DRAWINGS

[0052] In the drawings, like numerals may describe similar components in different views. The drawings illustrate generally, by way of example, but not by way of limitation, various embodiments discussed in the present document.

[0053] FIG. 1 is a block diagram illustrating a mobile device using a tile- based sampler selection (TBSS) rendering module, according to some embodiments. [0054] FIG. 2 is a more detailed diagram of the TBSS rendering module of FIG. 1 and associated functions for processing 3D graphics data, according to some embodiments.

[0055] FIG. 3 is a flowchart of a method for detecting edge information associated with processing 3D graphics data by the TBSS rendering module of FIG. 1, according to example embodiments.

[0056] FIG. 4 is a flowchart of a method for determining hint information associated with processing 3D graphics data by the TBSS rendering module of FIG. 1, according to example embodiments.

[0057] FIG. 5 is a flowchart of another method for determining hint information associated with processing 3D graphics data by the TBSS rendering module of FIG. 1, according to example embodiments.

[0058] FIG. 6 is an example sampler data structure used for rendering 3D graphics data, according to example embodiments.

[0059] FIG. 7 is a block diagram illustrating the generation of new sampler data structures used for rendering 3D graphics data, according to example embodiments.

[0060] FIG. 8, FIG. 9, and FIG. 10 illustrate example textures in a U-V coordinate system associated with texture coordinates (U, V) and X-Y coordinate system associated with screen coordinates (X, Y), according to some embodiments.

[0061] FIG. 11 is a block diagram of an X, Y Anisotropy module generating a desired anisotropy value for rendering 3D graphics data, according to example embodiments.

[0062] FIG. 12 is a flowchart of a method for generating a desired anisotropy value for rendering 3D graphics data, according to example embodiments.

[0063] FIG. 13 is a flowchart of a method for processing 3D graphics data according to example embodiments. [0064] FIG. 14 is a block diagram illustrating a representative software architecture, which may be used in conjunction with various device hardware described herein, according to example embodiments.

[0065] FIG. 15 is a block diagram illustrating circuitry for a device that implements algorithms and performs methods, according to example embodiments.

DETAILED DESCRIPTION

[0066] It should be understood at the outset that although an illustrative implementation of one or more embodiments is provided below, the disclosed systems and methods described with respect to FIGS. 1-15 may be implemented using any number of techniques, whether currently known or not yet in existence. The disclosure should in no way be limited to the illustrative implementations, drawings, and techniques illustrated below, including the exemplary designs and implementations illustrated and described herein, but may be modified within the scope of the appended claims along with their full scope of equivalents.

[0067] In the following description, reference is made to the accompanying drawings that form a part hereof, and in which are shown, by way of illustration, specific embodiments that may be practiced. These embodiments are described in sufficient detail to enable those skilled in the art to practice the inventive subject matter, and it is to be understood that other embodiments may be utilized, and that structural, logical, and electrical changes may be made without departing from the scope of the present disclosure. The following description of example embodiments is, therefore, not to be taken in a limiting sense, and the scope of the present disclosure is defined by the appended claims.

[0068] As used herein, the term “module” includes one or both of hardware or software that has been designed to perform a function or functions discussed herein.

[0069] As used herein, the term “tile” is associated with a portion of a grid used in tiled rendering of graphics data. More specifically, tiled rendering is the process of subdividing the graphics data (e.g., a computer graphics image) by a grid of tiles, and rendering each part of the grid (e.g., an individual tile) separately. During rendering of a single tile, the graphics data within the tile can be subdivided into multiple graphics triangles that are processed (e.g., rendered) separately.

[0070] As used herein, the term “texture” refers to a wallpaper attached to rendered graphics triangles of a 3D object to provide the characteristic color of the 3D object. Textures (also called “texture maps”) in 3D Graphics are universally stored as “mip-maps”, where “mip” stands for “multum in parvo”, which is Latin for “many things in a small object”. As used herein, the term “mip-map” refers to a pyramid-like data structure that allows a graphics processing unit (GPU) to quickly blend among multiple resolution versions of the texture, to display them quickly no matter how you zoom in or out of parts of the texture. As used herein, the term “trilinear mipmapping” (or “trilinear texturing”) refers to a linear mode of a mipmapping mode parameter (mipmapMode) of a sampler data structure used for rendering 3D graphics data. Given the particular texture coordinates (U, V) and level-of-detail D values of a texel to be read from the mipmap, the GPU reads four texels that are closest to the U, V values in the more-detailed mipmap level, and also four texels that are closest to the U, V values in the one-less-detailed mipmap level. In some aspects, the “more-detailed mipmap level” and the “one-less-detailed mipmap level” are selected based on the value of D. The GPU then linearly blends between the eight texels to produce the “texture color” applied to the on-screen pixel.

[0071] As used herein, the term “level-of-detail” (or “LOD”) is indicative of a resolution of a texture based on how close or far away the 3D object associated with the texture is. Each resolution-level of a mip-map is identified by a LOD parameter, where LOD=0 is the highest-resolution level. If LOD is increased, a blurrier version of the texture is obtained.

[0072] As used herein, the term “texel” is an abbreviation of “texture pixel” and refers to an individual pixel of a texture.

[0073] As used herein, the term "anisotropic" refers to a material, digital data, or other measurable or quantifiable characteristic having unequal physical properties along different axes. The term “anisotropic rendering” refers to the rendering of graphics data where the maximum number of texture pixels (texels) to be read in one direction during the rendering of a current frame are different from the maximum number of texels to be read in a different direction. In this regard, the term “anisotropy information” or “anisotropy parameter” indicates a maximum number of texels to be read in a single direction during the rendering of a current frame of graphics data.

[0074] As used herein, the term “high-frequency content” can be defined as variations in the rendered image color with respect to the spatial dimensions, wherein the rendered image colors are rapidly changing (i.e., changing at a high frequency). There are several techniques to detect if an image has “high- frequency content”. The first technique is “forward differencing”, which is used to determine high-frequency content based on the magnitude of parameters including dR/dX (derivative of R along X), etc. Similarly, the following parameters may also be used: dG/dX, dBdX. dR/dY, dG/dY, and dB/dY. A second technique is “edge detection filtering”, which is based on isolating those elements of the image that are the “edges”, which are generally the most high- frequency parts of images. The above techniques may be used with the disclosed rendering techniques for quantifying the “high-frequency content” of an image.

[0075] Mobile GPUs separate the displayed frame into GPU tiles and render one tile at a time. In accordance with the disclosed techniques, instead of using the standard LOD to read textures for each triangle in each tile, an estimated optimal LOD is computed based upon edge info of the rendered graphics triangles for that tile in the previous frame. The estimated optimal LOD, optimizes the number of texels that are read, thus reducing bandwidth requirements. That, in turn, increases rendering performance and decreases power consumption.

[0076] Disclosed techniques use a rendering module to analyze rendered graphics data in a previously rendered frame to detect high-frequency content (e.g., edge information) within individual tiles, and determine a set of hints for each tile based on the edge information. For example, the hints can include an amount of high-frequency information along a horizontal (X) axis and a vertical (Y) axis of an X-Y coordinate system in the rendered graphics data. [0077] Additionally, the rendering module is configured to generate new multiple data structures (or samplers) using existing samplers by varying parameters in an existing sampler. Example parameters in a sampler include a level of detail (LOD) parameter (e.g., mipLodBias) and an anisotropy parameter (e.g., maxAnistotropy), where the LOD parameter is associated with texture resolution used in a current frame, and the anisotropy parameter is associated with a maximum number of texels to be read in a single direction during the rendering of the current frame. In some embodiments, the rendering module may select a desired value for the anisotropy parameter using X-Y anisotropy information (e.g., anisotropy information associated with X-Y coordinate system of the device screen) instead of using only U-V anisotropy information (e.g., anisotropy information associated with a U-V coordinate system of a texture). In an example embodiment, the rendering module may use a separate module (e.g., a dedicated hardware module such as an X, Y Anisotropy module) that determines a desired anisotropy value based on X-Y anisotropy information (e.g., a desired anisotropy value is determined based on initial U-V anisotropy information, hint information associated with a previously rendered frame, a threshold values table, and a compensation factor). A more detailed description of the U-V and X-Y coordinate systems as well as the functionalities of the X, Y Anisotropy module are discussed in connection with FIGS. 8-12.

[0078] The rendering module selects one of the samplers (e.g., existing samplers and new samplers) based on the hints associated with each tile, and renders the graphics data in the tile using the selected sampler. By creating multiple versions of samplers, individual parameters used by the sampler can be optimized for each tile, which optimizes texel reads for each tile and increases the efficiency of graphics data processing in mobile devices. In this regard, since the disclosed rendering module performs tile-based graphics data processing and sampler selection, such rendering module is referred to as tile- based sampler selection (TBSS) rendering module. A general overview of a mobile device using a TBSS rendering module as well as a more detailed description of a TBSS rendering module are provided in connection with FIG. 1 and FIG. 2. Example processing functions of the TBSS rendering module are discussed in connection with FIGS. 3-7. [0079] The discussed techniques for processing 3D graphics data can be implemented, for example, using hardware, software, or a combination therewith, executed by one or more processors on a computing device (e.g., a mobile device).

[0080] In comparison to existing solutions for processing graphics data, the disclosed techniques optimize sampler selection used for rendering the graphics data in a current frame based on hints from a previously rendered frame. Additionally, the following technical innovations are associated with the disclosed techniques, which are not present in existing graphics data processing techniques:

[0081] (a) the disclosed TBSS rendering module uses mobile GPU tiling to determine per-tile hints based upon the image that was rendered for that tile in the previous frame;

[0082] (b) the disclosed TBSS rendering module uses hints (e.g., via sampler selection) to optimize memory bandwidth without sacrificing quality for rendering the tile in the current frame; and

[0083] (c) the disclosed TBSS rendering module may be implemented as a software -only solution (e.g., as part of the device operating system or as a separate application) or a combination of software and hardware (e.g., a hardware component of the TBSS rendering module such as an X, Y Anisotropy module, may be used in connection with X-Y anisotropy processing as discussed in connection with FIG. 11 and FIG. 12).

[0084] FIG. 1 is a block diagram illustrating a mobile device 100 using a tile-based sampler selection (TBSS) rendering module, according to some embodiments. The mobile device 100 in the embodiment shown includes a processing module 102, a memory 108, a display 112, and a camera 120 all coupled to or in communication with the processing module 102. The processing module 102 includes a central processing unit (CPU) 106 and a graphics processing unit (GPU) 104 coupled to a TBSS rendering module 110. Even though the TBSS rendering module 110 is illustrated in FIG. 1 as being separate from the CPU 106 and the GPU 104, the disclosure is not limited in this regard and the TBSS rendering module 110 may be part of the GPU 104, for example. In some aspects, the TBSS rendering module 110 may also be implemented as a stand-alone circuit within the mobile device 100, communicatively coupled to the processing module 102 and the memory 108.

[0085] In operation, the mobile device is executing a graphics processing application (or app) 118 using the processing module 102 and the memory 108. The processing module 102 (e.g., the GPU 104) uses the TBSS rendering module 110 to process and render 3D graphics data used by the graphics processing app 118 on the display 112. The 3D graphics data may be received at the mobile device 100 from another device or may be obtained via the device camera 120. In some embodiments, the TBSS rendering module 110 generates the sampler data structures 114 (e.g., as discussed in connection with FIG. 7) and the hints table 116 (e.g., as discussed in connection with FIGS. 2-5) used for processing the 3D graphics data and rendering the data on the display 112.

[0086] FIG. 2 is a more detailed diagram 200 of the TBSS rendering module of FIG. 1 and associated functions for processing 3D graphics data, according to some embodiments. Referring to FIG. 2, the TBSS rendering module 110 comprises suitable circuitry, logic, interfaces, and/or code and is configured to use rendered graphics data associated with a previous frame 206 for processing and rendering graphics data in a current frame 234.

[0087] During previous frame processing 202, which can be performed for each tile of a plurality of tiles 208 of the previous frame 206, the TBSS rendering module 110 selects a tile 210 from the plurality of tiles 208. At operation 212, the TBSS rendering module 110 detects edge information 214 associated with tile 210 of the previous frame 206. At operation 216, the TBSS rendering module 110 determines hint information (also referred to as “hints”) based on the edge information 214. In an example embodiment, hints from the previous frame 206 are stored as table entries 220, ..., 222 in the hints table 218 (which may be the same as the hints table 116 of FIG. 1). Each of the table entries 220, ..., 222 includes hints associated with a specific tile from the previous frame 206. For example, table entry 220 includes hints 224 associated with tile 210. In some aspects, the hints table 218 may be double-buffered in memory 108 of device 100 so that one buffer is written with one set of hints during the previous frame processing 202 while another buffer with a second set of hints is read during the current frame processing 204.

[0088] In an example embodiment, hint information associated with a tile in the previous frame 206 (e.g., hints 224 for tile 210) include an amount of high-frequency information along a horizontal (X) axis of an X-Y coordinate system in the rendered graphics data of the previous frame (also referred to as X_high_frequency), an amount of high-frequency information along a vertical (Y) axis of the X-Y coordinate system (also referred to as Y_high_frequency), and a minimal high-frequency Boolean variable (also referred to as Minimal_high_frequency or Min_high_frequency) derived from the X_high_frequency and Y_high_frequency. Example methods for determining the edge information as well as the hints (X_high_frequency, Y_high_frequency, and Min_high_frequency) are discussed in connection with FIGS. 3-5. Even though hints 224 are described as including Min_high_frequency, X_high_frequency, and Y_high_frequency, the disclosure is not limited in this regard and other hint information may be used in addition to (or instead of) these three types of hints.

[0089] During the current frame processing 204, the TBSS rendering module uses hint information from the hints table 218 to process graphics data in connection with rendering a plurality of tiles 236 for a current frame 234 (which may be sequential to the previous frame 206). More specifically, the TBSS rendering module 110 uses a sampler selection module 226 to determine using the hint information from the hints table 218, desired parameter values for a set of parameters associated with a plurality of sampler data structures. The TBSS rendering module 110 includes a sampler selection module 226 configured to select a sampler data structure from the plurality of sampler data structures based on the desired parameter values. The TBSS rendering module 110 also includes a tile rendering module 230 configured to render a tile of the plurality of tiles 236 in the current frame 234 using the selected sampler data structure. An example sampler data structure is described in connection with FIG. 6, and generation of the plurality of sampler data structures is discussed in connection with FIG. 7. [0090] The example embodiments described herein mention specific details that may not be considered limiting. For example, the described example embodiments discuss the computation of certain hints. Even though specific hints are discussed, the disclosure is not limited in this regard and other hints may be used for sampler data structure selection as well. Additionally, the TBSS rendering module 110 (including one or more of the modules that are part of the TBSS rendering module 110) may be implemented in hardware, software, or a combination therewith.

[0091] In some aspects, selecting the sampler data structure by the sampler selection module 226 is performed for each graphics triangle of a plurality of graphics triangles forming a tile of the current frame 234 that is being rendered. In this regard, selecting the sampler data structure by the sampler selection module 226 is performed based on a per-triangle modifier of the per-triangle modifiers 232, where the per-triangle modifier is configured for each graphics triangle of the plurality of graphics triangles forming the tile of the current frame that is being rendered.

[0092] In an example embodiment, the set of parameters of a sampler data structure includes a level of detail (LOD) parameter (also referred to as mipLodBias) and an anisotropy parameter (also referred to as maxAnisotropy). The LOD parameter is associated with texture resolution used in the current frame, and the anisotropy parameter is associated with a maximum number of texels to be read in a single direction during the rendering of the current frame. The set of parameters may further include a mipmapping mode parameter (also referred to as mipmapMode) associated with a number of texels to be read per pixel during the rendering of the current frame. The above-mentioned set of three parameters is used in the sampler data structure illustrated in FIG. 6. Even though the disclosed techniques use the above-mentioned set of three parameters for selecting a sampler data structure, the disclosure is not limited in this regard and additional (or other) parameters may be used as well.

[0093] In some embodiments, the desired parameter values include a desired LOD value for the LOD parameter. The sampler selection module 226 of the TBSS rendering module 110 is configured to determining the desired LOD value based on a maximum high-frequency value derived from the amount of high-frequency information along the X-axis and the amount of high- frequency information along the Y-axis.

[0094] In some aspects, the desired parameter values include a desired mipmapping mode for the mipmapping mode parameter. The desired mipmapping mode may include a Nearest mipmapping mode associated with reading a single texel per pixel during the rendering of the current frame, or a Linear mipmapping mode associated with reading multiple texels per pixel during the rendering of the current frame where the multiple texels associated with at least two mipmap levels. The sampler selection module 226 selects the Nearest mipmapping mode or the Linear mipmapping mode based on the minimal high-frequency Boolean variable.

[0095] In another embodiment, the desired parameter values include a desired anisotropy value for the anisotropy parameter. The sampler selection module 226 of the TBSS rendering module 110 is configured to determining an initial anisotropy value (e.g., maxAnisotropy) using U, V coordinates of a texture corresponding to the current frame 234 and corresponding derivatives of the U, V coordinates (the U, V coordinates are associated with a U-V coordinate system of the texture). The sampler selection module 226 is further configured to determine a plurality of modified anisotropy values corresponding to the initial anisotropy value based on a maximum high-frequency value (also referred to as Max_high_frequency) derived from the amount of high-frequency information along the X-axis and the amount of high-frequency information along the Y-axis of the X-Y coordinate system. Each of the plurality of modified anisotropy values corresponds to a threshold value of a corresponding plurality of threshold values associated with the maximum high-frequency value. The modified anisotropy values and the corresponding plurality of threshold values associated with the maximum high-frequency value are stored in a threshold values table. In some aspects, the TBSS rendering module 110 uses an X, Y Anisotropy module 228 configured to select a modified anisotropy value of the plurality of modified anisotropy values in the threshold values table as the desired anisotropy value. The selecting of the modified anisotropy value is based on the initial anisotropy value and the maximum high-frequency value. Example illustration of the U-V and X-Y coordinate systems is provided in FIGS. 8-10. A more detailed description of the X, Y Anisotropy module and its functionalities are provided in connection with FIG. 11 and FIG. 12.

[0096] In some embodiments, the sampler selection module 226 selects a sampler data structure from the plurality of sampler data structures based on the desired parameter values (e.g., the desired LOD value for the LOD parameter, the desired anisotropy value for the anisotropy parameter, and the desired mipmapping mode for the mipmapping mode parameter). For example, the sampler selection module 226 selects a sampler data structure that includes parameter values for the LOD parameter, the anisotropy parameter, and the mipmapping mode parameter that are closest in value to the desired LOD value, the desired anisotropy value, and the desired mipmapping mode respectively.

[0097] FIG. 3 is a flowchart of a method 300 for detecting edge information associated with processing 3D graphics data by the TBSS rendering module 110 of FIG. 1, according to example embodiments. Referring to FIG. 3, at operation 302, a rendered tile (e.g., tile 210 which may be 16 x 16 pixels) that was rendered as part of the previous frame 206 is retrieved. At operation 304, a conversion from Red-Green-Blue (“RGB”) to Luminance (i.e., brightness information without any of the color information) is performed using an RGB- to-YCrCb matrix to reduce the color channels from three to one. At operation 306, edge information is detected along the X direction and the Y direction. For example, the edge information may be detected using an edge detection filter, such as a Sobel filter or another convolutional filter reducing an input image to an image containing only the luminance of the edges. In some aspects, the Sobel filter is a convolution filter with a 5 x 5 filtering kernel (along the X direction) such as:

-2/8 -1/5 0 1/5 2/8 -2/5 -1/2 0 1/2 2/5 -2/4 -1/1 0 1/1 2/4 -2/5 -1/2 0 1/2 2/5 -2/8 -1/5 0 1/5 2/8

[0098] FIG. 4 is a flowchart of a method 400 for determining hint information associated with processing 3D graphics data by the TBSS rendering module 110 of FIG. 1, according to example embodiments. At operation 402, edge information for a tile in a previously rendered frame is determined (e.g., as described in connection with FIG. 3). At operation 404, the X_high_frequency hint is determined as a measure of the amount of high-frequency information in the tile of the previous frame (e.g., tile 210 in the previous frame 206) along the X-direction. At operation 406, the Y_high_frequency hint is determined as a measure of the amount of high-frequency information in the tile of the previous frame (e.g., tile 210 in the previous frame 206) along the Y direction.

[0099] In some embodiments, the X_high_frequency and

Y_high_frequency hints are floating-point numbers, that can be considered to range from 0.0 to 5.0. In some aspects, the TBSS rendering module 110 is configured to obtain infor ation from a 3 x 3 Sobel filter as well as a 5 x 5 Sobel filter so that the X_high_frequency and Y_high_frequency hints are not equated to a simple, linear function. It can be more complex (composed of multiple nonlinear pieces, e.g.). In this regard, the hint information determined by the TBSS rendering module 110 may be broadly considered as a measure of high-frequency information, rather than being narrowly defined as a simple function.

[0100] FIG. 5 is a flowchart of another method 500 for determining hint information (e.g., the Minimal_high_frequency Boolean variable) associated with processing 3D graphics data by the TBSS rendering module 110 of FIG. 1, according to example embodiments. Referring to FIG. 5, at operation 502, the X_high_frequency and the Y_high_frequency hints are determined using the previous frame 206 (e.g., as discussed in connection with FIG. 3 and FIG. 4). At operation 504, the Minimal_high_frequency Boolean variable is determined as an additional hint using the X_high_frequency and the Y_high_frequency hints. In some embodiments, the Minimal_high_frequency Boolean variable is determined as follows: TRUE if ( (X_high_frequency < tolerance) AND (Y_high_frequency < tolerance) ), else set to FALSE. The variable “tolerance” is a pre-configured high-frequency threshold value. In some aspects, the computing of the Minimal_high_frequency Boolean variable is performed once per tile and is stored as hint information (e.g., hints 224) in the hints table 218.

[0101] FIG. 6 is an example sampler data structure used for rendering 3D graphics data, according to example embodiments. Referring to FIG. 6, the sampler data structure 602 is a sampler data structure on a 3D application programming interface (API), such as a Vulkan API. As illustrated in FIG. 6, the sampler data structure 602 includes multiple parameters which are used for sampling textures and rendering graphics data. In an example embodiment, a set of parameters used by the TBSS rendering module 110 for sampler data structure selection includes the LOD parameter (mipLodBias) 606, the anisotropy parameter (maxAnisotropy) 608, and the mipmapping mode parameter (mipmapMode) 604.

[0102] FIG. 7 is a block diagram illustrating the generation of new sampler data structures used for rendering 3D graphics data, according to example embodiments. Referring to FIG. 1 and FIG. 7, GPU 104 may be configured with N sampler data structures for rendering graphics data. The graphics processing app 118 is configured with M texture types 702, ... , 704. Each of the M texture types 702, ..., 704 uses a corresponding existing sampler data structure of the N sampler data structures configured for the GPU 104 (since each texture type is texture-sampled differently), resulting in M existing sampler data structures 706, ..., 708 being used by the graphics processing app 118 in connection with corresponding M texture types 702, ..., 704.

[0103] In an example embodiment, the TBSS rendering module 110 generates an additional S sampler data structures for each of the M existing sampler data structures, resulting in M*S sampler data structures 114 used for the selection of a sampler data structure for rendering the current frame 234.

FIG. 7 illustrates S new sampler data structures 710, ..., 712 (for existing sampler data structure 706) and S new sampler data structures 714, ..., 716 (for existing sampler data structure 708).

[0104] In some aspects, the TBSS rendering module 110 selects S as the maximum number that satisfies M*S < N. For example, if (N=64) and (M=5), the TBSS rendering module 110 selects (S=12), resulting in the sampler data structures 114 including a total of (M*S=60) sampler data structures.

[0105] In an example embodiment, the TBSS rendering module 110 generates each set of S new sampler data structures for an existing sampler data structure as follows. A first new sampler data structure in the set of S new sampler data structures may be identical to the corresponding existing sampler data structure. For example, the new sampler data structure 710 may be identical to the existing sampler data structure 706 (to preserve the original sampler data structure behavior). Each of the remaining sampler data structures in the set of S new sampler data structures is generated using the corresponding existing sampler data structure by varying parameter values for one or more parameters in the existing sampler data structure. For example, remaining new sampler data structures of the set of S new sampler data structures 710, ..., 712 (excluding the first sampler data structure 710) may be generated by varying parameter values of a set of parameters in the existing sampler data structure 706.

[0106] In some embodiments, parameter values for the following set of parameters mentioned above may be varied: mipLodBias, maxAnisotropy, and mipmapMode. In this regard, multiple new sampler data structures in each set of S new sampler data structures (e.g., new sampler data structures 710, ..., 712 and 714, ..., 716) includes at least one parameter that has a parameter value different from a corresponding existing sampler data structure. For example, an existing sampler data structure 706 may have had mipFodBias=0.0, whereas some of the S new sampler data structures 710, ..., 712 can have other values for mipFodBias.

[0107] In some aspects, specific values of sampler data structure parameters (e.g., mipFodBias, maxAnisotropy, and mipmapMode) for each of the S new sampler data structures are selected based on the following criteria:

[0108] (a) At least one of the S new sampler data structures is identical to the corresponding existing sampler data structure to preserve the original behavior of the existing sampler data structure; and

[0109] (b) The remaining new sampler data structures (in a set of S new sampler data structures) are generated by varying the sampler data structure parameters, such that the new sampler data structures optimize the desired behavior (e.g., improving performance or quality, or a compromise in between) for various graphics data processing cases. In some embodiments, the TBSS rendering module 110 may profile the graphics processing app 118 to determine which combinations of these parameters are optimal for this particular app and may select the parameters and parameter values based on such determination.

For example, application profiling may indicate that mipFodBias with values 0.0, 0.7, 1.0, and 2.25 is associated with improving performance and such values may be varied during the generation of the new sampler data structures (e.g., a new sampler data structure may be generated for each of these mipLodBias parameter values).

[0110] After the M*S new sampler data structures (in the sampler data structures 114) are generated, the TBSS rendering module selects one of the sampler data structures 114 based on the hint information associated with the previous frame that has been rendered. More specifically, the sampler selection module 226 of the TBSS rendering module 110 determines desired parameter values for a set of parameters (e.g., mipLodBias, maxAnisotropy, and mipmapMode), and selects a sampler data structure from the sampler data structures 114 based on the desired parameter values. The tile rendering module 230 then renders a tile in the current frame 234 using the selected sampler data structures.

[0111] The following is a description of example functionalities that may be performed by the TBSS rendering module 110 in connection with determining desired parameter values for each parameter of the set of parameters used for selecting the sampler data structure.

[0112] Determining the Desired Parameter Value for mipLodBias

[0113] During the current frame processing 204, GPU 104 computes U,

V, and D (referred to as computed texture coordinates) for each pixel to be displayed on-screen, per-texture that is applied to that pixel. U, V are the 2- dimensional coordinates of the texture image in a U-V coordinate system of the texture (similar to X, Y coordinates for a photo image in an X-Y coordinate system associated with rendered graphics data displayed on a screen). D is the LOD associated with the multiple images of a mipmap of the texture. For example, D=0 is the highest-resolution level in the mipmap, D=1 is the next highest-resolution level, and so forth.

[0114] The mipLodBias is a number that is added to the computed D value for each pixel, as follows:

[0115] (a) A positive parameter value (e.g., mipLodBias > 0.0) is used when making the texture color of the pixel displayed on-screen blurrier than it would normally be. Rendering of blurrier graphics may be desired because blurrier rendering is rendering with less information content, which is associated with using less memory bandwidth during the current frame rendering as fewer texels have to be retrieved and processed. In this regard, a positive parameter value for mipLodBias results in increased performance.

[0116] (b) A negative parameter value (e.g., mipLodBias < 0.0) is used when making the texture color of the pixel displayed on-screen sharper than it would normally be. As this is the opposite of the blurrier rendering in the preceding section (a), the opposite effect on memory bandwidth is realized.

More specifically, the sharper rendering associated with a negative parameter value is rendering with more information content, which in turn translates to more memory bandwidth as more texels are retrieved and processed. Consequently, a negative parameter results in a decreased performance, at the benefit of images that look better on-screen.

[0117] In some embodiments, due to detailed image-processing-theory reasons, the trilinear mipmapping described above may not be optimal in terms of image quality as it may result in over-blurry rendering. In this regard, a slightly negative mipLodBias may be used to compensate for the over-blurry rendering, which results in better image quality.

[0118] In other embodiment, larger negative mipLodBias values may be avoided (and only small negative values are used), due to: (a) the more negative the value is, the more memory bandwidth used (resulting in performance cost); and (b) large negative values result in undesirable aliasing artifacts due to the detailed image-processing-theory reasons.

[0119] In some embodiments, the TBSS rendering module 110 may select either a positive or a negative value of mipLodBias, either to reduce memory bandwidth or to improve image quality.

[0120] In some aspects, the TBSS rendering module 110 may use the mipLodBias to increase performance by reducing memory bandwidth based on the following processing functionalities. A maximum high-frequency value (also referred to as Max_high_frequency) is determined as the maximum of (X_high_frequency, Y_high_frequency). Additionally, the TBSS rendering module 110 may use the following mipLodBias parameter values for sampler data structures: 0.0, 0.7, 1.0, and 2.25. In some embodiments, the TBSS rendering module 110 selects a desired parameter value for the mipLodBias as 0.0 (when Max_high_frequency is greater than 9.0), 0.7 (when Max_high_frequency is 5.0 to 9.0), 1.0 (when Max_high_frequency is 0.75 to 5.0), and 2.25 (when Max_high_frequency is less than 0.75). In this regard, the lower the Max_high_frequency value, the lower the high-frequency content of the rendered tile, and the fuzzier the textured color can be, without noticing any image deterioration. Alternatively, image quality may be increased (and reduce performance somewhat), by selecting a different mapping between Max_high_frequency and the selected values for mipLodBias.

[0121] The above illustrates one example of the TBSS rendering module

110 using hint information from the hints table 218 (specifically using the X_high_frequency and the Y_high_frequency hints) and performing sampler data structure selection using an optimal mipLodBias value. However, in other embodiment, optimizing other sampler data structure parameters (e.g., maxAnisotropy and mipmapMode) may be performed similarly (e.g., selecting the desired parameter value based on hints) and then use the desired parameter values for maxAnisotropy and mipmapMode during the sampler data structure selection.

[0122] Determining the Desired Parameter Value for maxAnisotropy (U,

V Anisotropy as Initial Anisotropy Value for maxAnisotropy)

[0123] In some aspects, maxAnisotropy is a number that specifies the maximum number of texels to be read in a single direction during the rendering of the current frame, and to achieve anisotropic texturing in the prior art (from now on referred to as "U, V anisotropic texturing"). The present disclosure adds additional steps to the U, V anisotropic texturing, which will be called "X, Y anisotropic texturing" and is described hereinbelow. In some aspects and as explained hereinbelow, the U, V anisotropy may be modified (e.g., by the X, Y Anisotropy Module 228) using X, Y anisotropy determined using disclosed techniques (e.g., as discussed in connection with FIG. 11 and FIG. 12).

[0124] FIG. 8 illustrates an example texture in a U-V coordinate system associated with texture coordinates (U, V) and X-Y coordinate system associated with screen coordinates (X, Y), according to some embodiments. For example and in reference to FIG. 8, texture 800 is illustrated in a U-V coordinate system 802 (e.g., using U, V texture coordinates), in a world 3D coordinate system 804 (e.g., based on Xw, Yw, andZw coordinates), and an X-Y coordinate system 806 of rendered graphics data (e.g., based on X, Y screen coordinates of the displayed rendered graphics data as appearing on a device screen).

[0125] For U, V anisotropic texturing, as the GPU 104 generates the computed texture coordinates (U, V, D) corresponding to the current on-screen pixel, the GPU 104 also makes note of the derivatives of U and V for the current pixel. More specifically, if the derivative (e.g., rate-of-change) of U is 10.0, whereas the derivative of V is 1.0, this indicates a mathematic determination that graphics data along the U direction is changing at 10 times the rate of graphics data along the V direction. Consequently, the texture is 10 times more compressed in the U direction, than it is in the V direction.

[0126] If the TBSS rendering module 110 applies the computed texture coordinates U, V, D to trilinear texturing, the resulting image is significantly blurrier because trilinear texturing is an isotropic algorithm that computes the D coordinate based upon an “average” of the derivates of U and V, and in effect computes an overly -conservative D value for the V direction.

[0127] In an example embodiment, instead of trilinear texturing (which reads 2 texels along both the U and V directions), the TBSS rendering module 110 can be configured to read more texels along one of the directions, the overly-conservative D value determination is mitigated and a different D value may be computed in the U direction versus the V direction. For example, if the derivative of U is 10.0 and the derivative of V is 1.0, the TBSS rendering module 110 may select to read 10 texels along the U direction and 2 texels along the V direction, and smoothly blend the results to determine the textured pixel color. Even though this processing is associated with the usage of extra memory bandwidth, the image quality improves significantly.

[0128] In some embodiments, a sampler data structure may not allow for an indication of whether maxAnisotropy will be applied to the U direction or the V direction. The GPU 104 may automatically determine which of the two directions has the higher derivative and uses maxAnisotropy in that direction. In some aspects, maxAnisotropy in a sampler data structure indicates a maximum anisotropy value that may be used, and GPU 104 may automatically determine an ideal anisotropy value that does not exceed the indicated maximum.

[0129] In some embodiments, maxAnisotropy may be selected (e.g., based on pixel on-screen rendering requirements) as an integer between 0 and 16, with 0 indicating that maxAnisotropy is not used (resulting in isotropic rendering of the graphics data) and 16 indicating a maximum value for the maxAnisotropy (16 times more texels are read in one direction versus the other direction).

[0130] In other embodiments, the TBSS rendering module 110 selects the desired parameter value for maxAnisotropy (or modifies an existing parameter value for maxAnisotropy) based on the X_high_frequency and Y_high_frequency hints using the following processing techniques. If both of these hints are below a minimum threshold value, the TBSS rendering module 110 uses maxAnisotropy=0.0 (which can be considered as a minimum parameter value for maxAnisotropy), as the tile of interest has almost no high-frequency info.

[0131] The preceding discussion mostly focuses on the U, V anisotropy used as the initial anisotropy value for the maxAnisotropy parameter. However, in some aspects, the TBSS rendering module 110 may use the X, Y Anisotropy module 228 to determine X, Y anisotropy as the desired anisotropy value used for the maxAnisotropy parameter for selecting the sampler data structure.

[0132] Determining the Desired Parameter Value for maxAnisotropy (X,

Y Anisotropy as the Desired Anisotropy Value for max Anisotropy!

[0133] FIG. 9 and FIG. 10 illustrate an example texture in a U-V coordinate system associated with texture coordinates (U, V) and X-Y coordinate system associated with screen coordinates (X, Y), according to some embodiments. FIG. 9 illustrates a diagram 900 of a texture 910A in a U-V coordinate system and the corresponding rendered texture 910B on screen 912 in an X-Y coordinate system of screen 912. When U, V anisotropy is used for maxAnsiotropy, the GPU notices graphics data in the U direction is compressed compared to the V direction. In this regard, for every pixel that uses texture 910A, the GPU performs extra reads because graphics data in the U direction is compressed. Consequently, using U, V anisotropy as maxAnisotropy only considers U, V coordinates of the graphics data and not the texture content.

[0134] FIG. 10 illustrates a diagram 1000 of texture 1010A in a U-V coordinate system and a corresponding rendered texture 1010B on screen 1012 in an X-Y coordinate system. As illustrated in FIG. 10, screen 1012 has been further annotated to include corresponding tiles.

[0135] In comparison to the U, V anisotropy mentioned in connection with FIG. 9, when X, Y anisotropy is used (e.g., as determined by the X, Y anisotropy module 228) as the desired anisotropy value for maxAnisotropy, the GPU notices that for some of the tiles (e.g., tiles 1014 in the rendered texture 1010B) there is no high-frequency information and extra anisotropy reads are unnecessary. The GPU then avoids the extra reads for such tiles where extra anisotropy reads are unnecessary.

[0136] FIG. 11 is a block diagram 1100 of an X, Y Anisotropy module

228 generating a desired anisotropy value for rendering 3D graphics data, according to example embodiments. Referring to FIG. 11, the X, Y Anisotropy module 228 can be configured to apply X, Y anisotropy processing techniques to determine the desired anisotropy value 1112 (also referred to as “new maxAnisotropy”) based on input information such as an initial anisotropy value 1102 (e.g., the maxAnisotropy based on U, V anisotropy), hint information Minimal_high_frequency 1104, Max_high_frequency 1106, a compensation factor 1108, and a threshold values table 1110.

[0137] As mentioned in connection with FIGS. 8-10, when only U, V anisotropy is used, the GPU does not use the high-frequency content of the resulting rendered image. This means the source texture may not have any high- frequency detail, but the rendering algorithm will nonetheless perform extra texel processing due to the anisotropy (as long as the U, V texturing indicates anisotropy may improve image quality). In this regard, U, V anisotropy assumes the worst-case scenario is needed, in terms of the extra texel processing due to anisotropy.

[0138] In some embodiments, using X, Y anisotropy to determine the desired anisotropy value resolves the above shortcomings of only using U, V anisotropy. The TBSS rendering module 110 (including the X, Y Anisotropy module 228) is configured to use the following techniques to generate the desired anisotropy value based on X, Y anisotropy.

[0139] The TBSS rendering module 110 uses the X_high_frequency and

Y_high_frequency hints to determine how much high-frequency information is present in the rendered image along the X and Y directions. A maximum of these parameters is used to form the parameter Max_high_frequency 1106. For each initial anisotropy value 1102 (or max Anisotropy), the TBSS rendering module 110 determines a minimum threshold value for Max_high_frequency that determines using the value of maxAnisotropy is justified. If Max_high_frequency 1106 is below this threshold, maxAnisotropy is reduced (creating modified anisotropy values) to increase performance, without any noticeable degradation in image quality. For example, for a texture where maxAnisotropy would normally be fixed at 16, we may have threshold settings as listed in TABLE 1 below:

TABLE 1

[0140] The “justified maxAnisotropy” values in TABLE 1 form a plurality of modified anisotropy values with a corresponding plurality of threshold values associated with the maximum high-frequency value (Max_high_frequency 1106). In some embodiments, the TBSS rendering module 110 generates and stores the above TABLE 1 as the threshold values table 1110. In this regard, the X, Y Anisotropy module 228 adjusts the initial anisotropy value 1102 (maxAnisotropy) to generate multiple modified anisotropy values (as listed in the threshold values table 1110) using Max_high_frequency 1106, to automatically reduce maxAnisotropy by selecting one of the modified anisotropy values as the desired anisotropy value 1112 to improve performance.

[0141] In some aspects, the X and Y directions need not align with the

U, V directions as the U-V coordinate system and the X-Y coordinate system are independent coordinate systems. As such, the TBSS rendering module 110 may determine a Max_high_frequency 1106 that needs to be adjusted due to the misalignment of the X, Y directions, as compared to the U, V directions. The most misalignment is associated with graphics data where U, V directions of the texture are at 45° angles to the X, Y directions. In some embodiments, the X, Y Anisotropy module 228 compensates for this worst-case scenario by multiplying the Max_high_frequency 1106 by a compensation factor 1108 before finding the justified_maxAnisotropy values (or the modified anisotropy values).

[0142] In an example embodiment, if Minimal_high_frequency 1104 is

TRUE, the X, Y Anisotropy module 228 may drop down to point sampling and turn off anisotropy.

[0143] In some embodiments, the functionalities of the X, Y Anisotropy module 228 may be performed by the sampler selection module 226 of the TBSS rendering module 110. In another embodiment, the sampler selection module 226 is used to determine U, V anisotropy as the initial maxAnisotropy value (e.g., maxAnisotropy of 2, 4, or 16). The X, Y Anisotropy module 228 (which can be configured as part of the texturing hardware part of the TBSS rendering module 110) can generate multiple modified anisotropy values as additional choices used for selecting the desired anisotropy value (e.g., maxAnisotropy of 2, 3, 4, 5... 16), which allows better fine-tuning of the optimizations. An additional benefit of using a separate X, Y Anisotropy module 228 is that there is no need for dedicating variations of the sampler data structures for choosing the optimum maxAnisotropy as the desired anisotropy value, freeing up sampler data structures for better optimizing other parameters (such as mipLodBias and mipmapMode).

[0144] FIG. 12 is a flowchart of a method 1200 for generating a desired anisotropy value for rendering 3D graphics data, according to example embodiments. Method 1200 includes operations 1220, 1222, 1224, 1226, 1228, and 1230 which may be performed during the rendering of 3D graphics data.

[0145] At operation 1220, an initial anisotropy value is determined using

U, V coordinates of a texture corresponding to the current frame and corresponding derivatives of the U, V coordinates, where the U, V coordinates are associated with a U-V coordinate system of the texture. For example, the initial anisotropy value 1102 (e.g., maxAnisotropy) is determined based on U, V anisotropy.

[0146] At operation 1222, a plurality of modified anisotropy values corresponding to the initial anisotropy value is determined based on a maximum high-frequency value derived from the amount of high-frequency information along the X-axis and the amount of high-frequency information along the Y- axis. Each of the plurality of modified anisotropy values corresponds to a threshold value of a corresponding plurality of threshold values associated with the maximum. For example and as described in connection with FIG. 11, the plurality of justified maxAnisotropy values in TABLE 1 form the plurality of modified anisotropy values with a corresponding plurality of threshold values associated with the maximum high-frequency value (Max_high_frequency 1106 which is derived based on X_high_frequency and Y_high_frequency hints).

[0147] At operation 1224, a threshold values table is generated, where the table includes the plurality of modified anisotropy values and the plurality of threshold values. For example TABLE 1 as described above is generated and stored as the threshold values table 1110.

[0148] At operation 1226, a compensation factor corresponding to a misalignment between U, V directions in the U-V coordinate system of the texture and X, Y directions in the X-Y coordinate system is determined. For example, the TBSS rendering module 110 determines a compensation factor 1108 corresponding to the misalignment between the U, V directions and the X, Y directions.

[0149] At operation 1228, the maximum high-frequency value (e.g.,

Max_high_frequency 1106) is adjusted using the compensation factor. [0150] At operation 1230, a modified anisotropy value of the plurality of modified anisotropy values is selected as the desired anisotropy value. For example, the X, Y Anisotropy module 228 receives as inputs the initial anisotropy value 1102, the Minimal_high_frequency 1104, the Max_high_frequency 1106, the compensation factor 1108, and the threshold values table 1110. The X, Y Anisotropy module 228 selects the modified anisotropy value as the desired anisotropy value based at least on the initial anisotropy value 1102 and the Max_high_frequency 1106 (as adjusted based on the compensation factor).

[0151] In some aspects, the TBSS rendering module 110 determines a minimal high-frequency Boolean variable (e.g., Minimal_high_frequency 1104) based on the amount of high-frequency information along the X-axis and the amount of high-frequency information along the Y-axis (e.g., hints X_high_frequency and Y_high_frequency). The TBSS rendering module 110 selects the lowest anisotropy value as the desired anisotropy value based on the minimal high-frequency Boolean variable.

[0152] Determining the Desired Parameter Value for mipmapMode

[0153] In some aspects, the set of parameters further includes a mipmapping mode parameter (e.g., mipmapMode) associated with a number of texels to be read per pixel during the rendering of the current frame.

[0154] The mipmapping mode parameter (mipmapMode) can be one of two settings in Vulkan (more settings are possible in API’s such as OpenGL):

[0155] (a) VK_FILTER_NEAREST

[0156] This Nearest mode is also called “point-sampled mipmapping”.

Given the particular U, V, D values of a texel to be read from the mipmap, the GPU reads the texel that is closest to the U, V, D values. Normally this results in significantly worse quality than the VK_FILTER_LINEAR mode. However, this mode normally results in significantly less memory bandwidth usage, as only a single texel is read for each on-screen pixel in this mode.

[0157] (b) VK_FILTER_LINEAR [0158] This Linear mode is also called “trilinear mipmapping”. Given the particular U, V, D values of a texel to be read from the mipmap, the GPU reads four texels that are closest to the U, V values in the more -detailed mipmap level, and also four texels that are closest to the U, V values in the one -less- detailed mipmap level. In some aspects, the “more-detailed mipmap level” and the “one -less-detailed mipmap level” are selected based on the value of D. The GPU then linearly blends between the eight texels to produce the “texture color” applied to the on-screen pixel. This mode generally results in smoother, more artifact-free images on-screen, due to the smooth blending among the nearest texel colors. However, this mode also results in the usage of significantly more memory bandwidth, as eight texels/pixel are read, instead of one texel/pixel in the “point-sampled mipmapping”.

[0159] In some aspects, the VK_FILTER_LINEAR mode is used as the image quality is better. However, if the TBSS rendering module 110 (during the previous frame processing) computes high-frequency information along the X- axis and high-frequency information along the Y-axis that is below a minimum threshold, the TBSS rendering module 110 may use the

VK_FILTER_NEAREST mode. In this case, the corresponding tile is rendered with minimal high-frequency content, and, therefore, rendering using the VK_FILTER_NEAREST mode may not result in degradation of image quality.

[0160] Per-Triangle Modifiers

[0161] In some aspects, the TBSS rendering module 110 can be configured to render particular objects with “fuzzier” or lower-quality texturing without the lowered quality being noticeable. For example, the object can be far away and a viewer would not notice lower texture quality on distant objects. For example, when an object is covered in fog, haze, or is behind a semi-transparent object, it may not be optimal to render such objects in the highest quality, as details will be covered up by the other effects/objects. In such cases, it may be advantageous for the TBSS rendering module 110 to use one or more per- triangle modifiers 232 that modify how the TBSS rendering module 110 behaves.

[0162] One example is to use a per-triangle modifier to set a minimum mipLodBias greater than 0. Another example is to use a per-triangle modifier that sets a maximum maxAnisotropy that’ s less than the original maxAnisotropy value. Yet another example is to use a per-triangle modifier that sets the mipmapMode to VK_FILTER_NEAREST.

[0163] Each of the above examples may reduce image quality but improve performance (e.g., by reducing memory bandwidth). In some embodiments, the per-triangle modifiers 232 are used by the TBSS rendering module 110 with each graphics triangle to modify the behavior of the sampler selection module 226.

[0164] In some embodiments, one way to implement the per-triangle modifiers is to alter the hints from the hints table 218 as follows. For example, if the minimum mipLodBias per-triangle modifier is set to 1.2, the X_high_frequency and Y_high_frequency values may be restricted to a minimum value that corresponds to mipLodBias getting set to a value nearest to 1.2. Another way to implement the per-triangle modifiers is to alter the hints-to- sampler data structure selection algorithm so that a different result is obtained (e.g., if certain values of the hints would result in mipLodBias of 0.0, the hints calculation may be changed via the per-triangle modifiers so that a sampler data structure selection that results in mipLodBias nearest to 1.2 occurs).

[0165] FIG. 13 is a flowchart of method 1300 for processing 3D graphics data according to example embodiments. Method 1300 includes operations 1302, 1304, 1306, 1308, and 1310. By way of example and not limitation, method 1300 may be performed by one or more processors of a TBSS rendering module configured within a computing device, such as device 1500 of FIG. 15, for example.

[0166] At operation 1302, edge information for a previous frame is detected. In some aspects, the detecting is based on rendered graphics data associated with the previous frame. For example, edge information 214 is detected, where edge information 214 is associated with tile 210 of the previous frame 206.

[0167] At operation 1304, hint information from the previous frame is determined. In some embodiments, the determining of the hint information is based on the edge information. The hint information indicates at least an amount of high-frequency information along a horizontal (X) axis and a vertical (Y) axis of an X-Y coordinate system in the rendered graphics data. For example, hint information for the previous frame includes X_high_frequency and Y_high_frequency, which is stored in the hints table 218.

[0168] At operation 1306, desired parameter values for a set of parameters associated with a plurality of sampler data structures are determined using the hint information. For example, desired parameter values for the set of parameters mipmapMode, mipLodBias, and maxAnisotropy are determined using the hint information (e.g., as discussed hereinabove).

[0169] At operation 1308, a sampler data structure is selected from the plurality of sampler data structures based on the desired parameter values. For example, the sampler selection module 226 of the TBSS rendering module 110 performs sampler data structure selection based on the desired parameter values (e.g., as discussed hereinabove).

[0170] At operation 1310, a current frame is rendered using the selected sampler data structure, the current frame being sequential to the previous frame. For example, the tile rendering module 230 of the TBSS rendering module 110 performs rendering of the current frame using the selected sampler data structure.

[0171] The example embodiments described herein mention specific details that may not be considered limiting. For example, the described example embodiments discuss the computation of certain hints. Even though specific hints are discussed, the disclosure is not limited in this regard and other hints may be used for sampler data structure selection as well. Additionally, the TBSS rendering module 110 (including one or more of the modules that are part of the TBSS rendering module 110) may be implemented in hardware, software, or a combination therewith.

[0172] FIG. 14 is a block diagram illustrating a representative software architecture, which may be used in conjunction with various device hardware described herein, according to example embodiments. FIG. 14 is merely a non limiting example of software architecture 1402 and it will be appreciated that many other architectures may be implemented to facilitate the functionality described herein. The software architecture 1402 executes on hardware, such as mobile device 100 in FIG. 1 which can be the same as device 1500 of FIG. 15 that includes, among other things, processor 1505, memory 1510, storage 1515 and/or 1520, and I/O interfaces 1525 and 1530.

[0173] A representative hardware layer 1404 is illustrated and can represent, for example, the device 1500 of FIG. 15. The representative hardware layer 1404 comprises one or more processing units 1406 having associated executable instructions 1408. Executable instructions 1408 represent the executable instructions of the software architecture 1402, including implementation of the methods, modules, and so forth of any of FIGS. 1-14. Hardware layer 1404 also includes memory or storage modules 1410, which may store the executable instructions 1408. Hardware layer 1404 may also comprise other hardware 1412, which represents any other hardware of the hardware layer 1404, such as the other hardware illustrated as part of device 1500.

[0174] The memory or storage modules 1410 can include storage devices with firmware implementing the TBSS rendering module 1460. In some aspects, the TBSS rendering module 1460 comprises suitable circuitry, logic, interfaces, or code and can be configured to perform the functionalities of the TBSS rendering module 110 discussed herein in connection with any of FIGS. 1-13. In an example embodiment, the TBSS rendering module 1460 may be part of the operating system 1414 (as illustrated in FIG. 14) or the applications 1420 of software architecture 1402. In yet another embodiment, the TBSS rendering module 1460 may be implemented in a distributed fashion where different components of the TBSS rendering module 1460 are implemented in hardware (e.g., as part of the hardware layer 1404) or software (as part of the operating system 1414 or the applications 1420).

[0175] In the example architecture of FIG. 14, the software architecture

1402 may be conceptualized as a stack of layers where each layer provides particular functionality. For example, the software architecture 1402 may include layers such as an operating system 1414, libraries 1416, frameworks/middleware 1418, applications 1420, and presentation layer 1444. Operationally, the applications 1420 or other components within the layers may invoke application programming interface (API) calls 1424 through the software stack and receive a response, returned values, and so forth, illustrated as messages 1426 in response to the API calls 1424. The layers illustrated in FIG. 14 are representative in nature and not all software architectures 1402 have all layers. For example, some mobile or special purpose operating systems may not provide frameworks/middleware 1418, while others may provide such a layer. Other software architectures may include additional or different layers.

[0176] The operating system 1414 may manage hardware resources and provide common services. The operating system 1414 may include, for example, a kernel 1428, services 1430, and drivers 1432. The kernel 1428 may act as an abstraction layer between the hardware and the other software layers. For example, kernel 1428 may be responsible for memory management, processor management (e.g., scheduling), component management, networking, security settings, and so on. The services 1430 may provide other common services for the other software layers. Drivers 1432 may be responsible for controlling or interfacing with the underlying hardware. For instance, the drivers 1432 may include display drivers, camera drivers, Bluetooth® drivers, flash memory drivers, serial communication drivers (e.g., Universal Serial Bus (USB) drivers), Wi-Fi® drivers, audio drivers, power management drivers, and so forth, depending on the hardware configuration.

[0177] Libraries 1416 may provide a common infrastructure that may be utilized by the applications 1420 or other components or layers. Libraries 1416 typically provide functionality that allows other software modules to perform tasks more easily than to interface directly with the underlying operating system 1414 functionality (e.g., kernel 1428, services 1430, or drivers 1432). Libraries 1416 may include system libraries 1434 (e.g., C standard library) that may provide functions such as memory allocation functions, string manipulation functions, mathematic functions, and the like. In addition, libraries 1416 may include API libraries 1436 such as media libraries (e.g., libraries to support presentation and manipulation of various media format such as MPEG4, FI.264, MP3, AAC, AMR, JPG, PNG), graphics libraries (e.g., an OpenGL framework that may be used to render 2D and 3D in a graphic content on a display), database libraries (e.g., SQLite that may provide various relational database functions), web libraries (e.g., WebKit that may provide web browsing functionality), and the like. Libraries 1416 may also include a wide variety of other libraries 1438 to provide many other APIs to the applications 1420 and other software components/modules.

[0178] The frameworks/middleware 1418 (also sometimes referred to as middleware) may provide a higher-level common infrastructure that may be utilized by the applications 1420 or other software components/modules. For example, the frameworks/middleware 1418 may provide various graphical user interface (GUI) functions, high-level resource management, high-level location services, and so forth. The frameworks/middleware 1418 may provide a broad spectrum of other APIs that may be utilized by the applications 1420 or other software components/modules, some of which may be specific to a particular operating system 1414 or platform.

[0179] Applications 1420 include built-in applications 1440, and third- party applications 1442. Examples of representative built-in applications 1440 may include but are not limited to, a contacts application, a browser application, a book reader application, a location application, a media application, a messaging application, or a game application. Third-party applications 1442 may include any of the built-in applications 1440 as well as a broad assortment of other applications. In a specific example, the third-party application 1442 (e.g., an application developed using the Android™ or iOS™ software development kit (SDK) by an entity other than the vendor of the particular platform) may be mobile software running on a mobile operating system such as iOS™, Android™, Windows® Phone, or other mobile operating systems. In this example, the third-party application 1442 may invoke the API calls 1424 provided by the mobile operating system such as operating system 1414 to facilitate functionality described herein.

[0180] The applications 1420 may utilize built-in operating system functions (e.g., kernel 1428, services 1430, and drivers 1432), libraries (e.g., system libraries 1434, API libraries 1436, and other libraries 1438), and frameworks/middleware 1418 to create user interfaces to interact with users of the system. Alternatively, or additionally, in some systems, interactions with a user may occur through a presentation layer, such as presentation layer 1444. In these systems, the application/module "logic" can be separated from the aspects of the application/module that interact with a user.

[0181] Some software architectures utilize virtual machines. In the example of FIG. 14, this is illustrated by virtual machine 1448. A virtual machine creates a software environment where applications/modules can execute as if they were executing on a hardware machine (such as the device 1500 of FIG. 15, for example). A virtual machine 1448 is hosted by a host operating system (e.g., operating system 1414) and typically, although not always, has a virtual machine monitor 1446, which manages the operation of the virtual machine 1448 as well as the interface with the host operating system (i.e., operating system 1414). A software architecture 1402 executes within the virtual machine 1448 such as an operating system (OS) 1450, libraries 1452, frameworks/middleware 1454, applications 1456, or presentation layer 1458. These layers of software architecture executing within the virtual machine 1448 can be the same as corresponding layers previously described or may be different.

[0182] FIG. 15 is a block diagram illustrating circuitry for a device that implements algorithms and performs methods, according to example embodiments. All components need not be used in various embodiments. For example, clients, servers, and cloud-based network devices may each use a different set of components, or in the case of servers, larger storage devices.

[0183] One example computing device in the form of a computer 1500

(also referred to as computing device 1500, computer system 1500, or computer 1500) may include a processor 1505, memory 1510, removable storage 1515, non-removable storage 1520, input interface 1525, the output interface 1530, and communication interface 1535, all connected by a bus 1540. Although the example computing device is illustrated and described as the computer 1500, the computing device may be in different forms in different embodiments.

[0184] The memory 1510 may include volatile memory 1545 and non volatile memory 1550 and may store a program 1555. The computing device 1500 may include - or have access to a computing environment that includes - a variety of computer-readable media, such as the volatile memory 1545, the non volatile memory 1550, the removable storage 1515, and the non-removable storage 1520. Computer storage includes random-access memory (RAM), read only memory (ROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), flash memory or other memory technologies, compact disc read-only memory (CD ROM), digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium capable of storing computer-readable instructions.

[0185] Computer-readable instructions stored on a computer-readable medium (e.g., the program 1555 stored in the memory 1510) are executable by the processor 1505 of the computing device 1500. A hard drive, CD-ROM, and RAM are some examples of articles including a non-transitory computer- readable medium such as a storage device. The terms “computer-readable medium” and “storage device” do not include carrier waves to the extent that carrier waves are deemed too transitory. “Computer-readable non-transitory media” includes all types of computer-readable media, including magnetic storage media, optical storage media, flash media, and solid-state storage media. It should be understood that software can be installed in and sold with a computer. Alternatively, the software can be obtained and loaded into the computer, including obtaining the software through a physical medium or distribution system, including, for example, from a server owned by the software creator or from a server not owned but used by the software creator. The software can be stored on a server for distribution over the Internet, for example. As used herein, the terms “computer-readable medium” and “machine -readable medium” are interchangeable.

[0186] Program 1555 may utilize a TBSS rendering module 1560. In some aspects, the TBSS rendering module 1560 comprises suitable circuitry, logic, interfaces, or code and can be configured to perform the functionalities of the TBSS rendering module 110 discussed herein in connection with any of FIGS. 1-13.

[0187] Any one or more of the modules described herein may be implemented using hardware (e.g., a processor of a machine, an application- specific integrated circuit (ASIC), field-programmable gate array (FPGA), or any suitable combination thereof). Moreover, any two or more of these modules may be combined into a single module, and the functions described herein for a single module may be subdivided among multiple modules. Furthermore, according to various example embodiments, modules described herein as being implemented within a single machine, database, or device may be distributed across multiple machines, databases, or devices.

[0188] Although a few embodiments have been described in detail above, other modifications are possible. For example, the logic flows depicted in the figures do not require the particular order shown, or sequential order, to achieve desirable results. Other steps may be provided, or steps may be eliminated, from the described flows, and other components may be added to, or removed from, the described systems. Other embodiments may be within the scope of the following claims.

[0189] It should be further understood that software including one or more computer-executable instructions that facilitate processing and operations as described above regarding any one or all of the steps of the disclosure can be installed in and sold with one or more computing devices consistent with the disclosure. Alternatively, the software can be obtained and loaded into one or more computing devices, including obtaining the software through a physical medium or distribution system, including, for example, from a server owned by the software creator or from a server not owned but used by the software creator. The software can be stored on a server for distribution over the Internet, for example.

[0190] Also, it will be understood by one skilled in the art that this disclosure is not limited in its application to the details of construction and the arrangement of components outlined in the description or illustrated in the drawings. The embodiments herein are capable of other embodiments and capable of being practiced or carried out in various ways. Also, it will be understood that the phraseology and terminology used herein are for description and should not be regarded as limiting. The use of “including,” “comprising,” or “having” and variations thereof herein is meant to encompass the items listed thereafter and equivalents thereof as well as additional items. Unless limited otherwise, the terms “connected,” “coupled,” and “mounted,” and variations thereof herein are used broadly and encompass direct and indirect connections, couplings, and mountings. In addition, the terms “connected” and “coupled,” and variations thereof, are not restricted to physical or mechanical connections or couplings. Further, terms such as up, down, bottom, and top are relative, and are employed to aid illustration, but are not limiting.

[0191] The components of the illustrative devices, systems, and methods employed by the illustrated embodiments can be implemented, at least in part, in digital electronic circuitry, analog electronic circuitry, or computer hardware, firmware, software, or in combinations of them. These components can be implemented, for example, as a computer program product such as a computer program, program code, or computer instructions tangibly embodied in an information carrier, or a machine-readable storage device, for execution by, or to control the operation of, data processing apparatus such as a programmable processor, a computer, or multiple computers.

[0192] A computer program can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other units suitable for use in a computing environment. A computer program can be deployed to be executed on one computer or multiple computers at one site or distributed across multiple sites and interconnected by a communication network. Also, functional programs, codes, and code segments for accomplishing the techniques described herein can be easily construed as within the scope of the claims by programmers skilled in the art to which the techniques described herein pertain. Method steps associated with the illustrative embodiments can be performed by one or more programmable processors executing a computer program, code, or instructions to perform functions (e.g., by operating on input data or generating an output). Method steps can also be performed by, and apparatus for performing the methods can be implemented as, special purpose logic circuitry, e.g., an FPGA (field-programmable gate array) or an ASIC (application-specific integrated circuit), for example.

[0193] The various illustrative logical blocks, modules, and circuits described in connection with the embodiments disclosed herein may be implemented or performed with a general-purpose processor, a digital signal processor (DSP), an ASIC, an FPGA or other programmable logic device, discrete gate, or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general-purpose processor may be a microprocessor, but in the alternative, the processor may be any processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration.

[0194] Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read-only memory or a random-access memory, or both. The required elements of a computer are a processor for executing instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto-optical disks, or optical disks. Information carriers suitable for embodying computer program instructions and data include all forms of non-volatile memory, including by way of example, semiconductor memory devices, e.g., electrically programmable read-only memory or ROM (EPROM), electrically erasable programmable ROM (EEPROM), flash memory devices, or data storage disks (e.g., magnetic disks, internal hard disks, or removable disks, magneto-optical disks, or CD-ROM and DVD-ROM disks). The processor and the memory can be supplemented by or incorporated in special purpose logic circuitry.

[0195] Those of skill in the art understand that information and signals may be represented using any of a variety of different technologies and techniques. For example, data, instructions, commands, information, signals, bits, symbols, and chips that may be referenced throughout the above description may be represented by voltages, currents, electromagnetic waves, magnetic fields or particles, optical fields or particles, or any combination thereof.

[0196] As used herein, “machine-readable medium” (or “computer- readable medium”) comprises a device able to store instructions and data temporarily or permanently and may include, but is not limited to, random- access memory (RAM), read-only memory (ROM), buffer memory, flash memory, optical media, magnetic media, cache memory, other types of storage (e.g., Erasable Programmable Read-Only Memory (EEPROM)), or any suitable combination thereof. The term “machine-readable medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, or associated caches and servers) able to store processor instructions. The term “machine-readable medium” shall also be taken to include any medium or a combination of multiple media, that is capable of storing instructions for execution by one or more processors, such that the instructions, when executed by one or more processors, cause the one or more processors to perform any one or more of the methodologies described herein. Accordingly, a “machine- readable medium” refers to a single storage apparatus or device, as well as “cloud-based” storage systems or storage networks that include multiple storage apparatus or devices. The term “machine-readable medium” as used herein excludes signals per se.

[0197] In an example embodiment, the computing device 1500 includes an edge detection module for detecting edge information for a previous frame, the detecting based on rendered graphics data associated with the previous frame; a hint determination module for determining hint information from the previous frame, the determining based on the edge information, and the hint information indicating an amount of high-frequency information along a horizontal (X) axis and a vertical (Y) axis of an X-Y coordinate system in the rendered graphics data; a parameter value determination module for determining using the hint information, desired parameter values for a set of parameters associated with a plurality of sampler data structures; a selection module for selecting a sampler data structure from the plurality of sampler data structures based on the desired parameter values; and a rendering module for rendering a current frame using the selected sampler data structure, the current frame being sequential to the previous frame. In an example embodiment, the above -listed modules are implemented as part of a TBSS rendering module for processing 3D graphics data. [0198] In addition, techniques, systems, subsystems, and methods described and illustrated in the various embodiments as discrete or separate may be combined or integrated with other systems, modules, techniques, or methods without departing from the scope of the present disclosure. Other items shown or discussed as coupled or directly coupled or communicating with each other may be indirectly coupled or communicating through some interface, device, or intermediate component whether electrically, mechanically, or otherwise. Other examples of changes, substitutions, and alterations are ascertainable by one skilled in the art and could be made without departing from the scope disclosed herein.

[0199] Although the present disclosure has been described concerning specific features and embodiments thereof, it is evident that various modifications and combinations can be made thereto without departing from the scope of the disclosure. For example, other components may be added to, or removed from, the described systems. The specification and drawings are, accordingly, to be regarded simply as an illustration of the disclosure as defined by the appended claims, and are contemplated to cover any modifications, variations, combinations, or equivalents that fall within the scope of the present disclosure. Other aspects may be within the scope of the following claims. Finally, as used herein, the conjunction “or” refers to a non-exclusive “or,” unless specifically stated otherwise.