Managing rendering targets for graphics processing units

US9928637B1 · US · B1

Patent metadata
FieldValue
Publication numberUS-9928637-B1
Application numberUS-201615064145-A
CountryUS
Kind codeB1
Filing dateMar 8, 2016
Priority dateMar 8, 2016
Publication dateMar 27, 2018
Grant dateMar 27, 2018

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

Shader data can be fetched directly from render targets using languages that do not natively support such functionality. Flags can be set to ensure that render targets remain in memory of a graphics processing unit (GPU). Render targets can remain in GPU memory in part by avoiding an unbinding from the GPU, significantly reducing the data round trips needed between a central processing unit (CPU) and the GPU. The ability to fetch the data straight from on-chip memory provides better performance on the GPU since textures that reside on slower memory do not need to be sampled. Since fetching directly from render targets is not possible in certain languages, special texture registers can be dedicated. A compiler can be configured to detect when a special register is being used and to output the necessary shader instructions in a platform-specific language.

First claim

Opening claim text (preview).

What is claimed is: 1. A computer-implemented method, comprising: receiving, from a gaming application, instructions to render a scene of content for display on a display screen of a computing device, the instructions corresponding to a first shading language; determining a set of pixels to be rendered for an image frame of the scene; assigning a respective texture for each pixel of the set of pixels to a respective register of a graphics processing unit (GPU), the respective register having a register identifier indicating that the register is storing texture data; converting the instructions for a respective register to byte code; modifying a register slot number for the respective register based at least in part upon a range of registers associated with a respective texture type; translating the byte code into a second shading language corresponding to a platform to be used in rendering the scene; sending the translated code, the register slot number, and a texture-specific instruction to a shader compiler in the second shader language, wherein the texture data is able to be fetched directly from the respective register of the graphics processing unit; generating a shader binary using shader compiler; and storing the resulting pixel data for each of the set of pixels to a frame buffer for use in rendering the scene of content. 2. The computer-implemented method of claim 1 , further comprising: setting a flag for the respective register to ensure that the respective register is not unbound from the GPU during a current pass through a rendering pipeline corresponding to the scene; and reusing at least a subset of the texture data in the respective registers for at least one subsequent pass through the rendering pipeline. 3. The computer-implemented method of claim 1 , further comprising: designating at least one respective register as a special texture register, wherein the register slot number for the special texture register is outside a slot number range of the GPU. 4. The computer-implemented method of claim 3 , wherein the texture data in at least one respective register is a render target that is able to be sampled without having to first resolve the render target to a texture and bind that texture to the GPU. 5. The computer-implemented method of claim 1 , wherein the first shader language is the high level shading language (HLSL) and the second shader language is one of the Metal shader language, the OpenGL Shading Language (GLSL), or SPIR-V. 6. A computer-implemented method, comprising: determining object data for a set of objects to be rendered as part of an image to be displayed; determining a set of pixel shaders to be used in determining pixel values based at least in part on the object data; causing a respective texture for a pixel of the image to be stored to a respective register of a graphics processing unit (GPU), the respective register having a register identifier indicating that the register is storing texture data; designating the respective register as a special texture register, wherein the register identifier for the respective register includes a specified slot number outside a slot range for the GPU; performing a rastering process for the pixel using data fetched from the respective register of the GPU based at least in part upon the register identifier, in order to determine a pixel value for the pixel; and writing the pixel value for the pixel, with other pixel values for the image, to a frame buffer until such time as the pixel values in the frame buffer are retrieved for generating the image to be displayed. 7. The computer-implemented method of claim 6 , further comprising: receiving, from a graphics application, graphics instructions for rendering the image, the graphics instructions corresponding to a first shader language; and translating the graphics instructions to a second shader language to be used in performing the rastering process. 8. The computer-implemented method of claim 7 , wherein the first shader language is the high level shading language (HLSL) and the second shader language is one of the Metal shader language, the OpenGL Shading Language (GLSL), or SPIR-V. 9. The computer-implemented method of claim 7 , wherein the graphics instructions are received to an application programming interface (API) associated with the second shader language. 10. The computer-implemented method of claim 6 , wherein the register identifier includes the specified slot number and an indicator for special texture data being stored in the register. 11. The computer-implemented method of claim 10 , further comprising: subtracting a texture starting slot number from the specified slot number before enabling the data to be fetched from the respective register of the GPU. 12. The computer-implemented method of claim 6 , further comprising: directly sampling the data from memory of the GPU referred to by the respective register without first resolving the data to a texture and binding the texture to the GPU. 13. The computer-implemented method of claim 6 , further comprising: setting a flag for the respective register to ensure that the data in the register remains bound to the GPU during a current pass through a rendering pipeline corresponding to the image. 14. The computer-implemented method of claim 13 , further comprising: reusing at least a subset of the data in the respective register for at least one subsequent pass through the rendering pipeline. 15. The computer-implemented method of claim 6 , further comprising: compiling a pixel shader to byte code corresponding to the first shader language before translating the pixel shader to a second shader language. 16. A computing device, comprising: a display screen; a central processing unit (CPU); a graphics processing unit (GPU); and memory including instructions that, upon execution by at least one of the CPU or the GPU, cause the computing device to: obtain object data for a set of objects to be rendered as part of an image to be displayed on the display screen; determine a set of pixel shaders to be used in determining pixel values based at least in part on the object data; cause a respective texture for a pixel of the image to be stored to a respective register of the GPU, the respective register having a register identifier indicating that the register is storing texture data, the register identifier having a register number outside a register range of the GPU; perform rastering for the pixel using data fetched from the respective register of the GPU based at least in part upon the register identifier, in order to determine a pixel value for the pixel; store the pixel value for the pixel, with other pixel values for the image, to a frame buffer; and read the pixel values from the frame buffer in order to generate the image and cause the image to be displayed on the display screen. 17. The computing device of claim 16 , wherein the instructions when executed further cause the computing device to: receive, from a graphics application to the computing device, graphics instructions for rendering the image, the graphics instructions corresponding to a first shader language; and translate the graphics instructions to a second shader language to be used in performing the rastering process, wherein the first shader language is the high level shading language (HLSL) and the second shader language is one of the Metal shader language, the OpenGL Shading Language (GLSL), or SPIR-V. 18. The computing device of claim 16 , wherein the

Assignees

Inventors

Classifications

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US9928637B1 cover?
Shader data can be fetched directly from render targets using languages that do not natively support such functionality. Flags can be set to ensure that render targets remain in memory of a graphics processing unit (GPU). Render targets can remain in GPU memory in part by avoiding an unbinding from the GPU, significantly reducing the data round trips needed between a central processing unit (CP…
Who is the assignee on this patent?
Amazon Tech Inc
What technology area does this patent fall under?
Primary CPC classification G06T15/005. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Mar 27 2018 00:00:00 GMT+0000 (Coordinated Universal Time) (B1). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).