Input filtering and sampler acceleration for supersampling
US-2023143192-A1 · May 11, 2023 · US
US12154209B2 · US · B2
| Field | Value |
|---|---|
| Publication number | US-12154209-B2 |
| Application number | US-202217849539-A |
| Country | US |
| Kind code | B2 |
| Filing date | Jun 24, 2022 |
| Priority date | Jun 25, 2021 |
| Publication date | Nov 26, 2024 |
| Grant date | Nov 26, 2024 |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
Official abstract text for this publication.
A method of improving texture fetching by a texturing/shading unit in a GPU pipeline by performing efficient convolution operations, includes receiving a shader and determining whether the shader is a kernel shader. In response to determining that the shader is a kernel shader, the shader is modified to perform a collective fetch of all texels used in convolution operations for a group of output pixels instead of performing independent fetches of texels for each output pixel in the group of output pixels.
Opening claim text (preview).
What is claimed is: 1. A computer system comprising one or more processors and a memory, the memory comprising computer readable instructions that, when executed by the one or more processors, cause the computer system to: receive a shader; determine whether the shader is a kernel shader; and in response to determining that the shader is a kernel shader, modifying the shader to perform a collective fetch of all texels used in convolution operations for a group of output pixels instead of performing independent fetches of texels for each output pixel in the group of output pixels. 2. A non-transitory computer readable storage medium having stored thereon computer readable instructions that, when executed at a computer system, cause the computer system to: receive a shader; determine whether the shader is a kernel shader; and in response to determining that the shader is a kernel shader, modifying the shader to perform a collective fetch of all texels used in convolution operations for a group of output pixels instead of performing independent fetches of texels for each output pixel in the group of output pixels. 3. A method comprising: receiving a shader; determining whether the shader is a kernel shader; and in response to determining that the shader is a kernel shader, modifying the shader to perform a collective fetch of all texels used in convolution operations for a group of output pixels instead of performing independent fetches of texels for each output pixel in the group of output pixels. 4. The method according to claim 3 , wherein modifying the shader to perform a collective fetch of all texels used in convolution operations for a group of output pixels instead of performing independent fetches of texels for each output pixel in the group of output pixels comprises: modifying the shader to include a plurality of fetch instructions for different sample positions, each sample position being offset from a texel centre and defining a different, non-overlapping patch of adjacent texels to be fetched. 5. The method according to claim 3 , wherein modifying the shader to perform a collective fetch of all texels used in convolution operations for a group of output pixels instead of performing independent fetches of texels for each output pixel in the group of output pixels comprises: modifying the shader to include a plurality of gather operations for different sample positions, each sample position being offset by integer values from a centre of one of the output pixels and defining a different, non-overlapping patch of adjacent texels to be fetched. 6. The method according to claim 3 , wherein determining whether the shader is a kernel shader comprises: determining if there is a 1:1 correspondence between texels and sampling points in the received shader, wherein if there is no correspondence the shader is not a kernel shader. 7. The method according to claim 3 , further comprising: in response to determining that the shader is not a kernel shader, leaving the shader unmodified. 8. The method according to claim 3 , further comprising: determining whether the shader is an optimized kernel shader that uses bilinear interpolation; and in response to determining that the shader is an optimized kernel shader: adapting the shader to reverse the bilinear interpolation; modifying the adapted shader to perform a collective fetch of all texels used in convolution operations for a group of output pixels instead of performing independent fetches of texels for each output pixel in the group of output pixels. 9. The method according to claim 8 , wherein adapting the shader to reverse the bilinear interpolation comprises: modifying each offset sample position in the shader to explicitly fetch two adjacent texels; and defining separate weights for each of the two adjacent texels. 10. The method according to claim 9 , wherein defining separate weights for each of the two adjacent texels comprises: allocating a weight associated with the offset sample position to each of the adjacent texels; and for each of the adjacent texels, modifying the allocated weight based on an offset of the offset sample position. 11. The method according to claim 9 , wherein adapting the shader to reverse the bilinear interpolation further comprises: for any non-offset sample position in the shader, leaving the sample position and associated weight unchanged. 12. The method according to claim 8 , wherein determining whether the shader is an optimized kernel shader that uses bilinear interpolation comprises: determining whether sample positions in the shader are spread around a common coordinate with offsets, wherein if the sample positions are spread around a common coordinate, the shader is an optimized kernel shader. 13. The method according to claim 8 , wherein determining whether the shader is an optimized kernel shader that uses bilinear interpolation comprises: determining whether convolution weights in the shader are all consistently distributed except for one convolution weight, wherein if all except for one of the convolution weights in the shader are consistently distributed, the shader is an optimized kernel shader. 14. The method according to claim 8 , further comprising: in response to determining that the shader is not a kernel shader or an optimized kernel shader, leaving the shader unmodified. 15. The method according to claim 3 , wherein determining whether the shader is an optimized kernel shader that uses bilinear interpolation comprises: determining whether the shader fetches an even number of texels, wherein if the shader fetches an even number of texels, the shader is an optimized kernel shader. 16. The method according to claim 3 , further comprising: validating the modified shader; and in response to the validation failing, reverting to the received, unmodified, shader. 17. The method according to claim 16 , wherein validating the secondary shader comprises: checking that all the texels used in convolution operations for the group of output pixels fall within a predefined maximum patch size. 18. The method according to claim 3 , further comprising: generating a secondary shader configured to validate the modified shader when executed, in response to the validation passing, to trigger use of the modified shader and in response to the validation failing, to trigger use of the received, unmodified, shader.
Shading · CPC title
Geometric effects · CPC title
Perspective computation · CPC title
Texture mapping · CPC title
involving image processing hardware · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.