Graphic processing unit and method of performing, by graphic processing unit, tile-based graphics pipeline
11 claims: 10 independent, 1 dependent
- 1グラフィックプロセッシング装置において、グラフィックス・パイプラインを遂行する方法において、 ハルシェーダから出力された出力パッチが含まれたタイルの個数に基づいて、前記出力パッチに対するテッセレーティングをスキップするか否かを判断し、前記判断の結果によって、前記出力パッチまたはテッセレーティングされたプリミティブに係わるタイルリストをビニングするビニング・パイプラインを遂行する段階と、 前記ビニングされたタイルリストに基づいて、タイル単位でレンダリング・パイプラインを遂行する段階と、を含 み、 前記ビニング・パイプラインを遂行する段階は、前記出力パッチが含まれた前記タイルの個数が1個である場合に、テッセレータによって行われる前記出力パッチに対する前記テッセレーティングをスキップすることを含む、 方法。
- 2前記ビニング・パイプラインを遂行する段階は、 入力パッチを、前記ハルシェーダでハルシェーディングすることにより、前記出力パッチを生成する段階と、 前記出力パッチに係わる前記タイルリストをビニングする段階と、 前記出力パッチが1タイルに含まれるか否かを判断する段階と、を含み、 前記レンダリング・パイプラインを遂行する段階は、 前記出力パッチが前記1タイルに含まれていると判断された場合、前記出力パッチに対して、ビニングされた前記タイルリストを利用して、ラスタライジングを行うことを特徴とする請求項 1 に記載の方法。
- 3前記ビニング・パイプラインを遂行する段階は、 前記出力パッチが2以上のタイルに含まれていると判断された場合、前記出力パッチに対するテッセレータの前記テッセレーティング、及びドメインシェーダのドメインシェーディングを行うことにより、前記テッセレーティングされたプリミティブを生成する段階を含み、 前記レンダリング・パイプラインを遂行する段階は、 前記テッセレーティングされたプリミティブに対して、ビニングされた前記タイルリストを利用して、前記ラスタライジングを行うことを特徴とする請求項 2 に記載の方法。
- 4前記ビニング・パイプラインを遂行する段階は、 前記出力パッチが1タイルに含まれた場合、前記出力パッチに係わる可視性ストリームを保存し、前記出力パッチが2以上のタイルに含まれた場合、前記テッセレーティングされたプリミティブに係わる可視性ストリームを保存する段階を含むことを特徴とする請求項1~ 3 のうちの何れか1項に記載の方法。
- 5前記レンダリング・パイプラインを遂行する段階は、 前記ビニング・パイプラインで、前記テッセレーティングがスキップされた場合、前記ビニング・パイプラインで、前記出力パッチに対して保存されたビンストリームを利用して、テッセレーション・パイプラインを遂行する段階を含むことを特徴とする請求項1~ 4 のうち何れか1項に記載の方法。
- 6グラフィックス・パイプラインを遂行するコンピューティング装置において、 ハルシェーダから出力された出力パッチが含まれたタイルの個数に基づいて、前記出力パッチに対するテッセレーティングをスキップするか否かを判断し、前記判断の結果によって、前記出力パッチまたはテッセレーティングされたプリミティブに係わるタイルリストをビニングするビニング・パイプライン、及び前記ビニングされたタイルリストに基づいて、タイル単位でレンダリング・パイプラインを遂行するグラフィックプロセッシング装置と、 前記ビニング・パイプラインでビニングされた前記タイルリストを保存し、前記保存されたタイルリストを、前記レンダリング・パイプラインに提供するメモリと、を含 み、 前記グラフィックプロセッシング装置は、前記ビニング・パイプラインで、前記出力パッチが含まれた前記タイルの個数が1個であると判断された場合に、前記ビニング・パイプラインで、テッセレータによって行われる前記出力パッチに対する前記テッセレーティングをスキップする、 コンピューティング装置。
- 7前記グラフィックプロセッシング装置は、 入力パッチを、前記ハルシェーダでハルシェーディングすることにより、前記出力パッチを生成し、前記出力パッチに対して、前記タイルリストの前記ビニングを行い、前記出力パッチが1タイルに含まれるか否かを判断する前記ビニング・パイプラインを遂行し、 前記出力パッチが、前記1タイルに含まれていると判断された場合、前記出力パッチに対して、ビニングされた前記タイルリストを利用して、ラスタライジングを行う前記レンダリング・パイプラインを遂行することを特徴とする請求項 6 に記載のコンピューティング装置。
- 8前記グラフィックプロセッシング装置は、 前記出力パッチが2以上のタイルに含まれていると判断された場合、前記出力パッチに対するテッセレータの前記テッセレーティング、及びドメインシェーダのドメインシェーディングを行うことにより、前記テッセレーティングされたプリミティブを生成する前記ビニング・パイプラインを遂行し、 前記テッセレーティングされたプリミティブに対して、ビニングされた前記タイルリストを利用して、前記ラスタライジングを行う前記レンダリング・パイプラインを遂行することを特徴とする請求項 7 に記載のコンピューティング装置。
- 9前記メモリは、 前記ビニング・パイプラインが遂行される間、前記出力パッチが1タイルに含まれた場合、前記出力パッチに係わる可視性ストリームを保存し、前記出力パッチが2以上のタイルに含まれた場合、前記テッセレーティングされたプリミティブに係わる可視性ストリームを保存す るこ とを特徴とする請求項 6~8 のうち何れか1項に記載のコンピューティング装置。
- 10請求項1に記載の方法を前記グラフィックプロセッシング装置に実行させるコンピュータプログラム。
- 11請求項 10 に記載のコンピュータプログラムを記憶する記憶媒体。
Independent claims11
284 paragraphs, as filed
The present invention relates to a graphic processing device, a method of performing a graphics pipeline based on tiles in the graphic processing device, and the like.
A graphics processing unit such as a GPU (graphics processing unit) is responsible for rendering graphics data in a computing device. Generally, a graphic processing device converts graphics data corresponding to a two-dimensional object or a three-dimensional object into a two-dimensional pixel representation to generate a frame for a display. The type of computing device is a PC (personal). Computers), laptops, consoles for video games, as well as embedded devices such as smartphones, tablet devices, and wearable devices may be included. Embedded devices such as smartphones, tablet devices, and wearable devices are for PCs, laptops, and video games that have sufficient memory space and processing power due to relatively low computing power and many power consumption issues. It is difficult to have the same graphic processing performance as a workstation such as a console. However, with the recent worldwide widespread use of portable devices such as smartphones or tablet devices, those users can play games through smartphones or tablet devices, or content such as movies and dramas. The frequency of viewing is increasing rapidly. As a result, manufacturers of graphic processing devices are actively conducting research to keep pace with user demand and improve the performance and processing efficiency of graphic processing devices in embedded devices.
<p><patcit num="1"><text>U.S. Patent Registration No. 6,359,619</text></patcit></p>
<p> An object to be solved by the present invention is to provide a graphic processing device, a method of performing a graphics pipeline based on tiles in the graphic processing device, and the like. The technical problem intended in the present embodiment is not limited to the above-mentioned technical problem, but also includes other technical problems.</p>
<p> To solve the above problems, according to one aspect of the present invention, the method of performing a graphics pipeline in a graphics processing device is based on the number of tiles containing the output patch output from the hull shader. A step of performing a binning pipeline that determines whether to skip the tessellating for the output patch and, based on the determination result, binning the tile list related to the output patch or the tessellated primitive, and the above. Includes steps to perform a tile-by-tile rendering pipeline based on a binned tile list.</p><p> Further, the step of executing the binning pipeline skips the tessellation for the output patch performed by the tessellator when the number of tiles including the output patch is one.</p><p> Further, the steps of executing the binning pipeline include a step of generating the output patch by hull shading the input patch with the hull shader, a step of binning the tile list related to the output patch, and the step of binning the tile list related to the output patch. When it is determined that the output patch is included in the one tile, the step of determining whether or not the output patch is included in one tile and the step of executing the rendering pipeline include the step of determining whether or not the output patch is included in the one tile. , The output patch is rasterized by using the binned tile list.</p><p> In addition, at the stage of executing the binning pipeline, when it is determined that the output patch is contained in two or more tiles, the tessellating of the tessellator and the domain shading of the domain shader are performed on the output patch. Thereby, including the step of generating the tessellated primitive, the step of performing the rendering pipeline utilizes the tile list binned to the tessellated primitive to the raster. Perform the rising.</p><p> In addition, the stage of executing the binning pipeline is when the output patch is included in one tile, the visibility stream related to the output patch is saved, and the output patch is included in two or more tiles. , Including the step of storing the visibility stream relating to the tessellated primitive.</p><p> Also, the stage of performing the rendering pipeline utilizes the bin stream stored for the output patch in the binning pipeline if the tessellation is skipped in the binning pipeline. Including the stage of carrying out the tessellation pipeline.</p><p> To solve the above problems, according to another aspect of the present invention, the computing device performing the graphics pipeline is based on the number of tiles containing the output patch output from the hull shader. A binning pipeline that determines whether to skip the tessellating for the output patch and binning the tile list related to the output patch or the tessellated primitive according to the judgment result, and the binned tile list. A graphic processing device that performs a rendering pipeline on a tile-by-tile basis; as well as storing the tile list binned in the binning pipeline and providing the saved tile list to the rendering pipeline. Includes memory;</p><p> Further, when the graphic processing apparatus determines in the binning pipeline that the number of tiles including the output patch is one, the output patch performed by the tessellator in the binning pipeline. The tessellation for is skipped.</p><p> Further, the graphic processing device generates the output patch by hull shading the input patch with the hull shader, performs the binning of the tile list on the output patch, and the output patch is one tile. If it is determined that the output patch is included in the one tile by executing the binning pipeline that determines whether or not the output patch is included in the output patch, the tile that has been binned with respect to the output patch is executed. The list is used to perform the rendering pipeline for rasterizing.</p><p> Further, when it is determined that the output patch is contained in two or more tiles, the graphic processing device performs the tessel rating of the tessellator and the domain shading of the domain shader on the output patch, thereby performing the tesse. Performs the binning pipeline that produces the rated primitives, and uses the binned tilelist to perform the rendering pipeline that performs the rasterizing for the tessellated primitives. ..</p><p> In addition, the memory stores the visibility stream related to the output patch when the output patch is included in one tile while the binning pipeline is executed, and the output patch is stored in two or more tiles. If included, it includes the step of storing the visibility stream associated with the tessellated primitive.</p><p> To solve the above problems, according to still another aspect of the present invention, the method of performing a graphics pipeline in a graphics processing apparatus is a second tessellation different from the first tessellation factor determined by the hull shader. Based on the number of tiles containing the primitive tessellated by the factor, it is determined whether or not to skip the tessellation based on the first tessellation factor, and the first tessellation is determined based on the judgment result. Rendering on a tile-by-tile basis, based on the steps of performing a binning pipeline that binning tilelists for tessellated primitives or output patches output from the hull shader, and the binned tilelist. Including the stage of carrying out the pipeline.</p><p> Also, the step of performing the binning pipeline is the first tessellation performed by the tessellator when the number of tiles containing the tessellated primitive in the second tessellation factor is one. Skip the tessellation based on the factor.</p><p> Further, the second tessellation factor is lower than the first tessellation factor.</p><p> Further, the steps of executing the binning pipeline include the step of generating the output patch with the hull shader and performing hull shading to determine the first tessellation factor, and the second step lower than the first tessellation factor. A step of generating the tessellated primitive with the second tessellation factor by performing the tessellation of the tessellator and the domain shading of the domain shader for the output patch based on the tessellation factor, and the second step. The step of determining whether or not the tessellated primitive is included in one tile by the tessellation factor, and the step of executing the rendering pipeline, including the step of determining whether or not the tessellated primitive is included in one tile, is the step of performing the rendering pipeline. When the rated primitive is included in the one tile, the output patch is rasterized by using the binned tile list.</p><p> Further, the step of executing the binning pipeline is based on the first tessellation factor when it is determined that the tessellated primitive is contained in two or more tiles by the second tessellation factor. The rendering pipe comprises the step of generating the tessellated primitive with the first tessellation factor by performing the tessellation of the tessellator and the domain shading of the domain shader on the output patch. The stage of executing the line performs the rasterizing on the tessellated primitive with the first tessellation factor by utilizing the tile list binned.</p><p> In addition, the step of executing the binning pipeline stores the visibility stream related to the output patch when the tessellated primitive with the second tessellation factor is included in one tile, and the second tessellation factor is executed. If the tile contains the tessellated primitive with the tessellation factor, the first tessellation factor includes a step of storing the visibility stream related to the tessellated primitive.</p><p> To solve the above problems, according to still another aspect of the present invention, the computing device performing the graphics pipeline has a second tessellation factor different from the first tessellation factor determined by the hull shader. Based on the number of tiles containing the tessellated primitive, it is determined whether or not to skip the tessellation based on the first tessellation factor, and based on the judgment result, the first tessellation factor is determined. A binning pipeline that binnes the tilelist associated with the tessellated primitive or output patch output from the hull shader, and a graphic that performs a tile-by-tile rendering pipeline based on the binned tilelist. It includes a processing device; and a memory that stores the tile list binned in the binning pipeline and provides the saved tile list to the rendering pipeline.</p><p> Further, the graphic processing device is based on the first tessellation factor performed by the tessellator when the number of tiles including the tessellated primitive in the second tessellation factor is one. Skip tessellation.</p><p> Further, the second tessellation factor is lower than the first tessellation factor.</p><p> In order to solve the above problems, according to still another aspect of the present invention, a method of performing a graphics pipeline in a graphics processing device is to perform the output patch by binning the output patch output from the hull shader. Is included in a plurality of tiles, and if the output patch is included in the plurality of tiles, the step of executing the binning pipeline that schedules the rendering order of the tiles and the scheduled stage. The rendering pipeline for the first tile scheduled in the first rendering order includes the step of performing the rendering pipeline for the tile on a tile-by-tile basis based on the rendering order. Includes binning to generate a visibility stream for adjacent tiles adjacent to .</p><p> Also, the step of performing the binning pipeline skips the tessellation for the output patch performed by the tessellator.</p><p> Further, the steps of executing the binning pipeline include a step of generating the output patch by hull shading the input patch with the hull shader, a step of binning the tile list related to the output patch, and the output. A step of determining whether or not the patch is included in the plurality of tiles, and a step of determining the first tile corresponding to the first rendering order when the output patch is included in the tiles. Including.</p><p> Also. The stage of executing the rendering pipeline includes the stage of executing the first rendering pipeline for the first tile and the stage of executing the second rendering pipeline for the adjacent tile, and the second stage. The stage of performing the rendering pipeline is at least one of the visible vertices, visible primitives and visible patches on the adjacent tile, based on the visibility stream generated in the first rendering pipeline. Render for one.</p><p> In order to solve the above problems, according to still another aspect of the present invention, the computing device performing the graphics pipeline has a plurality of the output patches by binning the output patches output from the hull shader. If the output patch is included in the tile, the tile is based on the binning pipeline that schedules the rendering order of the tile and the scheduled rendering order. A graphic processing device that, in units, performs a rendering pipeline for the tile; as well as for the first tile generated while the rendering pipeline for the first tile scheduled in the first rendering order is performed. Includes memory for storing visibility streams for adjacent adjacent tiles.</p><p> The graphics processing device also skips tessellating for the output patch performed by the tessellator in the binning pipeline.</p><p> Further, the graphic processing device generates the output patch by hull-shading the input patch with the hull shader while the binning pipeline is executed, and binning the tile list related to the output patch. It is determined whether or not the output patch is included in the plurality of tiles, and if the output patch is included in the tile, the first tile corresponding to the first rendering order is determined.</p><p> Further, the graphic processing device executes a first rendering pipeline for the first tile, executes a second rendering pipeline for the adjacent tile, and the second rendering pipeline performs the first rendering. -Rendering is performed on at least one of the visible vertices, visible primitives, and visible patches on the adjacent tile based on the visibility stream generated in the pipeline.</p><p> To solve the above problems, according to still another aspect of the present invention, the method of performing a graphics pipeline in a graphics processing apparatus is a second tessellation different from the first tessellation factor determined by the hull shader. By binning the tessellated primitive by the factor, it is determined whether or not the tessellated primitive is included in the plurality of tiles by the second tessellation factor, and the tessellation is determined by the second tessellation factor. When the rated primitives are included in the plurality of tiles, the rendering to the tiles is performed on a tile-by-tile basis based on the steps of executing the binning pipeline that schedules the rendering order of the tiles and the scheduled rendering order. The rendering pipeline for the first tile, including the stage of performing the pipeline and scheduled in the first rendering order, binning to generate a visibility stream for adjacent tiles adjacent to the first tile. Including.</p><p> Also, the step of performing the binning pipeline skips the tessellation based on the first tessellation factor performed by the tessellator.</p><p> Further, the second tessellation factor is lower than the first tessellation factor.</p><p> Further, the steps of executing the binning pipeline include a step of performing hull shading in which an output patch is generated by the hull shader and determining the first tessellation factor, and a second tessellation lower than the first tessellation factor. A step of generating the tessellated primitive with the second tessellation factor by performing tessellation of the tessellator for the output patch and domain shading of the domain shader based on the tessellation factor, and the second tessellation. A step of binning the tile list related to the tessellated primitive by a factor, a step of determining whether or not the tessellated primitive is included in the plurality of tiles by the second tessellation factor, and a step of determining whether or not the tessellated primitive is included in the plurality of tiles. If the tile contains the tessellated primitive with the second tessellation factor, it includes a step of determining the first tile corresponding to the first rendering order.</p><p> Further, the stage of executing the rendering pipeline includes a stage of executing the first rendering pipeline for the first tile and a stage of executing the second rendering pipeline for the adjacent tile. The stage of performing the second rendering pipeline is based on the visibility stream generated by the first rendering pipeline of the visible vertices, visible primitives and visible patches on the adjacent tiles. Render for at least one of them.</p><p> To solve the above problems, according to still another aspect of the present invention, the computing device performing the graphics pipeline has a second tessellation factor different from the first tessellation factor determined by the hull shader. By binning the tessellated primitive, it is determined whether or not the tessellated primitive is included in a plurality of tiles by the second tessellation factor, and the tessellated primitive is tessellated by the second tessellation factor. When the primitive is included in the plurality of tiles, the binning pipeline that schedules the rendering order of the tiles and the rendering pipeline for the tiles are executed on a tile-by-tile basis based on the scheduled rendering order. Graphic processing device; as well as a memory that stores the visibility stream for adjacent tiles adjacent to the first tile that was generated while the rendering pipeline was performed for the first tile scheduled in the first rendering order. ;including.</p><p> The graphic processing device also skips the tessellation based on the first tessellation factor performed by the tessellator in the binning pipeline.</p><p> Further, the second tessellation factor is lower than the first tessellation factor.</p><p> Further, the graphic processing apparatus generates an output patch with the hull shader while the binning pipeline is executed, performs hull shading to determine the first tessellation factor, and is lower than the first tessellation factor. By performing tessellation of the tessellator for the output patch and domain shading of the domain shader based on the second tessellation factor, the tessellated primitive is generated by the second tessellation factor, and the second tessellation factor is generated. The tessellation factor is used to bin the tile list related to the tessellated primitive, the second tessellation factor is used to determine whether or not the tessellated primitive is included in the plurality of tiles, and the tessellation factor is used to determine whether or not the tessellated primitive is included in the plurality of tiles. If the tile contains the tessellated primitive with two tessellation factors, the first tile corresponding to the first rendering order is determined.</p><p> Further, the graphic processing device executes a first rendering pipeline for the first tile, executes a second rendering pipeline for the adjacent tile, and the second rendering pipeline performs the first rendering. -Rendering is performed on at least one of the visible vertices, visible primitives, and visible patches on the adjacent tile based on the visibility stream generated in the pipeline.</p><p> In order to solve the above problems, according to still another aspect of the present invention, there is provided a computer-readable recording medium on which a program for executing at least one of the above-mentioned methods on a computer is recorded.</p>
<p> According to the present invention, in a tessellation pipeline that is a part of a graphics pipeline processed by a GPU, tessellation by skipping tessellation by a tessellator or utilizing a low tessellation factor is performed. By performing the above, the amount of GPU calculation can be reduced and the processing speed can be increased.</p>
<figref num="1">It is a drawing for demonstrating the computing apparatus by one Embodiment.</figref><figref num="2">It is a drawing for explaining the rendering (TBR) based on a tile.</figref><figref num="3">It is a drawing for demonstrating the tessellation pipeline.</figref><figref num="4">It is a drawing for demonstrating the tessellation pipeline.</figref><figref num="5">It is a drawing for demonstrating the tessellation pipeline.</figref><figref num="6">It is a block diagram which illustrated the detailed hardware structure of the GPU of FIG. 1 by one Embodiment.</figref><figref num="7">It is a drawing for demonstrating the selection of a variety of graphics pipelines that can be carried out on a GPU by one embodiment.</figref><figref num="8A">It is a drawing for demonstrating the relationship between the number of tiles for dividing a 3D object by one Embodiment, and graphics processing performance (or efficiency).</figref><figref num="8B">It is a drawing for demonstrating the relationship between the number of tiles for dividing a 3D object by one Embodiment, and graphics processing performance (or efficiency).</figref><figref num="9">It is a drawing for demonstrating the relationship between the output control point of an output patch, and a tessellated primitive according to one embodiment.</figref><figref num="10">It is a drawing for demonstrating the graphics pipeline carried out on GPU by one Embodiment.</figref><figref num="11">It is a flowchart of a graphics pipeline performed by a GPU according to one embodiment.</figref><figref num="12">It is a drawing for demonstrating the graphics pipeline carried out by GPU by another embodiment.</figref><figref num="13">It is a flowchart of a graphics pipeline carried out on a GPU by another embodiment.</figref><figref num="14">It is a drawing for demonstrating the graphics pipeline carried out by a GPU by still another embodiment.</figref><figref num="15">It is a flowchart of a graphics pipeline carried out on a GPU by still another embodiment.</figref><figref num="16">It is a drawing for demonstrating the graphics pipeline carried out by a GPU by still another embodiment.</figref><figref num="17">It is a flowchart of a graphics pipeline carried out on a GPU by still another embodiment.</figref><figref num="18">It is a drawing for demonstrating the graphics pipeline carried out by a GPU by still another embodiment.</figref><figref num="19">It is a flowchart of a graphics pipeline carried out on a GPU by still another embodiment.</figref><figref num="20">It is a drawing for demonstrating the graphics pipeline carried out by a GPU by still another embodiment.</figref><figref num="21">It is a flowchart of a graphics pipeline carried out on a GPU by still another embodiment.</figref><figref num="22">It is a drawing for demonstrating the case where the tessellation result of a patch, the tile list to which a patch belongs, and the tile list to which a tessellated primitive belong are different depending on another embodiment.</figref><figref num="23">It is a drawing for demonstrating the graphics pipeline carried out by a GPU by still another embodiment.</figref><figref num="24">It is a flowchart of a graphics pipeline carried out on a GPU by still another embodiment.</figref><figref num="25">It is a block diagram which illustrated the detailed hardware configuration of the computing apparatus by one Embodiment.</figref><figref num="26A">It is a drawing for demonstrating the condition for selecting the type of graphics pipeline processed by a GPU by one Embodiment.</figref><figref num="26B">It is a drawing for demonstrating the condition for selecting the type of graphics pipeline processed by a GPU by one Embodiment.</figref><figref num="27A">It is a drawing for demonstrating the condition for selecting the type of graphics pipeline processed by a GPU by another embodiment.</figref><figref num="27B">It is a drawing for demonstrating the condition for selecting the type of graphics pipeline processed by a GPU by another embodiment.</figref><figref num="28">It is a drawing for demonstrating an example to which a visibility stream stored in a bin stream of memory is applied in a graphics pipeline according to one embodiment.</figref><figref num="29">It is a drawing for demonstrating an example in which a visibility stream stored in a bin stream of memory is applied in a graphics pipeline according to another embodiment.</figref><figref num="30">A drawing for explaining a visibility stream in which a binning pipeline is completed and stored in a bin stream by one embodiment.</figref><figref num="31">It is a drawing for explaining the visibility stream which completes a binning pipeline and is stored in a bin stream by another embodiment.</figref><figref num="32">It is a flowchart of a method of carrying out a graphics pipeline in a computing device according to an embodiment.</figref><figref num="33">It is a flowchart of a method of carrying out a graphics pipeline in a computing device according to another embodiment.</figref><figref num="34">FIG. 5 is a flow chart of a method of performing a graphics pipeline in a computing device according to still another embodiment.</figref><figref num="35">FIG. 5 is a flow chart of a method of performing a graphics pipeline in a computing device according to still another embodiment.</figref>
For the terms used in the present invention, general terms currently widely used as much as possible have been selected in consideration of the functions in the present invention, which are the intentions of those skilled in the art, precedents or the emergence of new techniques. It also depends on such things. Further, in a specific case, there is a term arbitrarily selected by the applicant, and in that case, the meaning is described in detail in the explanation part of the invention. Therefore, the term used in the present invention must be defined based on the meaning of the term and the general content of the present invention, which is not a simple name of the term.
In the entire specification, when one part is connected to another part, it is not only directly connected, but also electrically connected with another element in the middle. Including cases. Also, when a part contains a component, it does not exclude the other component unless otherwise stated to be the opposite, and it means that the other component may be further included. .. In addition, terms such as "... part" and "module" described in the specification mean a unit for processing at least one function or operation, which is embodied in hardware or software, or It is also embodied by the combination of hardware and software.
As used herein, terms such as "constituent" or "contains" are not construed to include the various components described herein, or necessarily any of the many stages. It must be construed that some components or some stages may not be included, or that additional components or stages may be included.
In addition, terms including ordinal numbers such as "first" or "second" used in the present specification are used to describe various components, but the components are limited by the terms. It's not something. The term is used only to distinguish one component from the other.
Hereinafter, the invention will be described in detail by way of illustration only with reference to the accompanying drawings. It goes without saying that the following embodiments are for embodying the invention and do not limit or limit the scope of rights of the invention. From the detailed description and embodiments, what can be easily inferred by an expert in the technical field to which the invention belongs is interpreted as belonging to the scope of rights of the invention.
FIG. 1 is a drawing for explaining a computing device according to an embodiment.
Referring to FIG. 1, the computing device 1 includes a GPU (graphics processing unit) 10, a CPU (central processing unit) 20, a memory 30 and a bus 40. In the computing device 1 illustrated in FIG. 1, only the components related to the embodiment are illustrated. Therefore, a normal engineer in the art can understand that other general purpose components may be further included in addition to the components shown in FIG. Let's go.
The computing device 1 includes a desktop computer, a laptop computer, a smartphone, a PDA (personal digital assistant), a portable media player, a video game console, a TV set top box, a tablet device, an electronic book reader, a wearable device, and the like. It can be mentioned, but it is not limited to them. That is, the computing device 1 is a device having a graphics processing function for displaying contents, and the category of the computing device 1 includes various devices.
The CPU 20 is hardware that controls the general operation and functions of the computing device 1. For example, CPU 20 can drive an operating system (OS), call a graphics API (application programming interface) for GPU 10, and execute a driver for GPU 10. In addition, the CPU 20 can execute various applications stored in the memory 30, such as web browsing applications, game applications, and video applications.
GPU 10 is a graphics-only processor that runs the graphics pipeline to render a 3D object on a 3D image into a 2D image for display. It is also the hardware embodied to carry out the line. For example, GPU 10 can also perform a variety of functions such as shading, blending, and illumination, as well as a variety of functions for generating pixel values for displayed pixels.
GPU 10 can perform tile-based graphics pipelines, or tile-based rendering (TBR). The term tile-based (or based on tiles) means that each frame of a video is divided into multiple tiles (partitioning) and then rendered on a tile-by-tile basis. The tile-based architecture requires less computation than processing frames on a pixel-by-pixel basis, so graphics used on relatively low-performance mobile devices (or embedded devices), such as smartphones and tablet devices. It is also a s-rendering method.
With reference to FIG. 1, GPU 10 can run a graphics pipeline that includes a binning pipeline 101 and a rendering pipeline 102. Binning Pipeline 101 generates a tile list that shows which tiles contain vertices, primitives, or patches that make up a 2D or 3D object. The process of doing. For that reason, the binning pipeline 101 is a tiling pipeline, binning phase. It can be replaced with other terms, such as the term phase). Rendering pipeline 102 is the process of rendering an object on a tile-by-tile basis based on the tile list generated by binning pipeline 101. The "object" in the present application may be referred to as an "object" or an "object". When the rendering pipeline 102 is complete, the pixel representation of the 2D or 3D object displayed on the 2D display screen is determined. Rendering pipeline 102 can be substituted for other terms, such as the term rendering phase.
Each of the binning pipeline 101 and the rendering pipeline 102 may include a tessellation pipeline. That is, GPU 10 can perform deferred tessellation. Some graphics pipelines, including MicroSoft's DirectX 11 (DX11) API, OpenGL 4.0 API, etc., include additional processing stages for tessellation of graphics primitives (or graphics patches). Tessellation is the process of dividing a graphics patch into smaller graphics primitives, allowing the display of images with finer detail. A graphics pipeline that includes a binning pipeline 101 and a rendering pipeline 102 driven by GPU 10 of compute device 1 can support such tessellation. On the other hand, in the present specification, the embodiment described below is a GPU. Driven by 10.
The memory 30 is hardware for storing various data processed in the computing device 1. For example, the memory 30 can store the data processed by the GPU 10 and the CPU 20 and the data to be processed. .. In addition, the memory 30 can store applications, drivers, and the like driven by the GPU 10 and the CPU 20. The memory 30 includes RAM (random access memory) such as DRAM (dynamic random access memory) and SRAM (static random access memory), ROM (read-only memory), EEPROM (electrically erasable and programmable read only memory), and CD (CD). compact disc)-ROM, Blu-ray, other optical disk storage, HDD (hard disk drive), SSD (solid state) It may include drive) or flash memory and may further include other external storage devices that are accessed by compute device 1.
The bus 40 is hardware that connects the hardware so that data can be transmitted and received between the hardware in the computing device 1, and the bus 40 is, for example, a PCI bus or a PCI Express bus. May include a wide variety of types.
On the other hand, the binning pipeline 101 referred to herein includes the binning pipeline 101-1,101-2,101-3 or 101-4 described in the following embodiments, the binning pipeline 101. It corresponds to any one of -1,101-2,101-3 or 101-4. Also, the rendering pipeline 102 referred to herein includes the rendering pipeline 102-1, 102-2, 102-3 or 102-4 described in the following embodiments, the rendering pipeline 102. It corresponds to any one of -1,102-2,102-3 or 102-4.
FIG. 2 is a drawing for explaining tile-based rendering (TBR).
With reference to FIG. 2, it is assumed that the automobile object 220 corresponds to one frame in a moving image. GPU 10 in FIG. 1 divides one frame containing the 3D automobile object 220 into NxM (N, M are natural numbers) tiles 210. Here, the frame containing the three-dimensional automobile object 220 is divided into tiles 210, and it is determined by the binning pipeline 101 of FIG. 1 which tile 210 contains the three-dimensional automobile object 220. Will be carried out. The GPU 10 in FIG. 1 then renders the 3D vehicle object 220 contained in the tile 210 on a tile-by-tile basis and converts it into a pixel representation. Here, rendering the three-dimensional automobile object 220 on a tile-by-tile basis and converting it into a pixel representation is performed by the rendering pipeline 102 of FIG. Rendering the three-dimensional automobile object 220 included in one frame using tile 210 instead of rendering in pixel units is called tile-based rendering (TBR).
3 to 5 are drawings for explaining the tessellation pipeline. In the following, FIGS. 3 to 5 will be connected and described. As mentioned above, the tessellation pipeline 300 described in FIGS. 3 to 5 is applied as is to the binning pipeline 101 and the rendering pipeline 102 of FIG. 1, or is slightly modified. Applies to.
With reference to FIG. 3, the tessellation pipeline 300 is carried out by a hull shader 121, a tessellator 123 and a domain shader 125. That is, the term tessellation pipeline 300 described herein is one or more of the processes (or stages) of hull shading with hull shader 121, tessellation with tessellator 123, and domain shading with domain shader 125. Defined to include a stage.
The hull shader 121 converts the input control points that represent the low order surface into the output control points that make up the patch. For example, the hull shader 121 transforms the input control points and the control points P00, P01, P02, P03, P10, P11, P12, P13, P20, P21, P22, P23, P30, P31, P32 illustrated in FIG. And patch 410 of the mesh constructed by P33 can be generated. Here, the patch can also have polygonal forms such as triangles, rectangles, and contour lines.
The hull shader 121 can generate the output control points that make up the patch and at the same time determine the tessellation factor (TF) (or tessellation level). TF) or tessellation level (TL) is an index that indicates how much the patch is partitioned or how the patch is partitioned. Table 500 illustrated in Figure 5 is the tessellation factor. It is a table that defines the relationship between (TF) and the number of divided triangles. According to Table 500, when the tessellation factor (TF) is 1, the number of triangles is 1, so for the patch. No tessellation is performed. However, as the tessellation factor (TF) increases, the number of triangles increases geometrically. In other words, as the tessellation factor (TF) increases, the number of divided triangles increases. The larger the number, the more GPU At 10, it means that the amount of calculation that must be processed increases for a certain patch. However, the higher the tessellation factor (TF), the smoother the representation of the object patch is possible. On the other hand, in Table 500 of FIG. 5, the case where the polygon to be divided is a triangle is given as an example, but the patch is not limited to that, and the patch is divided into other polygons such as a quadrangle and an contour line. You may.
The hull shader 121 transmits information related to the output control point and tessellation factor (TF) of the output patch to the tessellator 123 and the domain shader 125.
The tessellator 123 uses the tessellation factor (TF) received from the hull shader 121 to calculate the uvw coordinates and weighted values in the barycentric coordinates for the output control points.
The domain shader 125 provides information on the output control point and tessellation factor (TF) of the output patch received from the hull shader 121, and the uvw coordinates (w coordinates are optional) and weighted values received from the tessellator 123. It is used to generate tessellated vertices. With reference to Figure 4, the positions of the tessellated vertices make up the boundary 420. That is, patch 410 is transformed into a smoother vertex (or primitive) on boundary 420 as the tessellation pipeline is carried out.
FIG. 6 is a block diagram illustrating the detailed hardware structure of the GPU of FIG. 1 according to one embodiment.
With reference to Figure 6, the GPU 10 has an input assembler 110 that carries out the graphics pipeline 100, a vertex shader 115, a hull shader 121, a tessellator 123, a domain shader 125, and a geometry shader. It may include shader 130, binner 135, rasterizer 140, pixel shader 150 and output merger 160. The GPU 10 may further include a controller 170 and a buffer 180. On the other hand, the above-mentioned configurations that carry out the graphics pipeline 100 within GPU 10 are also classified based on the functions described below. Therefore, each of the above-mentioned configurations that carry out the graphics pipeline 100 is embodied in program logic or software modules that execute each of the functions described below. In contrast, the aforementioned configuration that carries out the graphics pipeline 100 is a GPU. It is also embodied by each of the sub processing units (or processor cores) provided within the 10. That is, the embodiment of the above-mentioned configuration that carries out the graphics pipeline 100 is not limited by any one of them. Furthermore, although the names of the above-mentioned configurations that carry out the graphics pipeline 100 are also given based on the functions described below, the fact that such names are changed in various ways means that the technology concerned. Anyone skilled in the field will understand. For example, by one embodiment, the vina 135 and the controller 170 may also be in separate configurations, or by another embodiment, the vina 135 may be embodied to be included in the controller 170, without a separate vina 135. , Only controller 170 may be present.
On the other hand, according to this specification, the name of the configuration that executes the graphics pipeline 100 on GPU 10 is the name defined in Microsoft's Direct X11 (DX11) for convenience of explanation. , The name of the configuration is not limited to it. In other words, the configuration that executes the graphics pipeline 100 on GPU 10 also supports similar configurations defined by other APIs such as OpenGL (Open Graphics Library) 4.0 and CUDA (Compute Unified Device Architecture) 6.0. .. For example, the domain shader 125 also supports the tessellation evaluation shader used in OpenGL 4.0, as well as other configurations within GPU 10 such as OpenGL 4.0 or CUDA 6.0. It will be understood by those who are skilled in the technical field that it also supports the configuration used in the API of.
The input assembler 110 supplies the vertices data related to the object stored in the memory 30 (FIG. 1) to the graphics pipeline 100. The vertices supplied to the graphics pipeline 100 also relate to, but are not limited to, patches that are a representation of mesh or surface.
The vertex shader 115 transmits the vertices supplied by the input assembler 110 as input control points of the hull shader 121. Vertex shading defined in DirectX9 (DX9) performed world-view-projection related to vertex. However, unlike that, the vertices shading defined in DirectX 11 (DX11) introduced by the tessellation pipeline does not perform the world view projection related to vertices, it just conveys the vertices to the next stage. Is. In this embodiment, the vertex shader 115 can operate in a similar manner. That is, the vertex shader 115 only transmits the input control points corresponding to the vertices supplied by the input assembler 110 to the hull shader 121, and does not generate new control points.
The hull shader 121, the tessellator 123 and the domain shader 125 can carry out the tessellation pipeline 300 previously described in FIG. That is, the input control point input to the hull shader 121 is output from the domain shader 125 as a tessellated vertex (or tessellated primitive) related to the output patch.
The geometry shader 130 is an optional component that is also used to generate additional vertices (or primitives) from the tessellated vertices (or tessellated primitives) received from the domain shader 125. is there.
Vina 135 utilizes output primitives from domain shader 125 or geometry shader 130 for binning or tiling. That is, the Vina 135 performs a depth test (or tile Z test) and generates (binning) a tile list showing information about the tiles to which each output primitive belongs. On the other hand, according to another embodiment, the vina 135 is also a configuration included in the controller 170.
The rasterizer 140 converts the output primitives from the domain shader 125 or geometry shader 130 into pixel values in two-dimensional space based on the generated tile list. The pixel shader 150 can also perform additional actions on pixels such as depth testing, clipping, scissoring, and blending. The pixel shading result of the pixel shader 150 is stored in the buffer 180 by the output merger 160 and then displayed as a frame of the video.
The controller 170 is a component of the graphics pipeline 100 (input assembler 110, vertex shader 115, hull shader 121, tessellator 123, domain shader 125, geometry shader 130, vina 135, rasterizer 140, pixel shader 150 and output merger 160. ) And the general function and operation of the buffer 180. On the other hand, the controller 170 can control the mode of the graphics pipeline 100 described with reference to FIG.
FIG. 7 is a drawing for explaining the selection of various graphics pipelines that can be performed on the GPU according to one embodiment.
Referring to FIG. 7, the MODE (1) to MODE (8) graphics pipelines are the embodiments described in the drawings below, and the controller 170 has one of them pipelines on the GPU 10. It can be controlled to be carried out.
More specifically, the controller 170 turns off (turns off) or turns on (turns off) the efficiency mode associated with the MODE (1) to MODE (8) graphics pipelines. ON). Efficiency mode ON / OFF is set by the user of compute device 1 or depends on the processing environment of the video processed by the graphics pipeline (for example, resolution, capacity, performance of compute device 1, etc.). Dependent.
When efficiency mode is turned off, controller 170 can carry out the general graphics pipeline 109. Here, the general graphics pipeline 109 is a known conventional graphics pipeline, and for example, DirectX9 (DX9), DirectX10 (DX10), DirectX11 (DX11), CUDA 6.0, OpenGL 4.0, etc. is there.
When the efficiency mode is turned on, the controller 170 can perform any one of the MODE (1) to MODE (8) graphics pipelines. The choice of one of MODE (1) to MODE (8) is set by the user of compute device 1 or the processing environment of the video processed by the graphics pipeline (eg, tile size, etc.). Depends on resolution, capacity, performance of compute device 1, etc.). For MODE (1), controller 170 controls the graphics pipeline, including binning pipeline 101-1 and rendering pipeline 102-1, to run on GPU 10 and MODE (2). In the case of), the controller 170 controls the graphics pipeline including the binning pipeline 101-2 and the rendering pipeline 102-1 to be executed on the GPU 10, and in the case of MODE (3). , Controller 170 is a GPU with a graphics pipeline that includes a binning pipeline 101-3 and a rendering pipeline 102-1. Controlled to run on 10 and in MODE (4), controller 170 runs the graphics pipeline, including binning pipeline 101-4 and rendering pipeline 102-1, on GPU 10. In MODE (5), the controller 170 will have the graphics pipeline, including the binning pipeline 101-3 and the rendering pipeline 102-2, run on the GPU 10. In MODE (6), the controller 170 controls the graphics pipeline, including the binning pipeline 101-4 and the rendering pipeline 102-2, to run on the GPU 10. , MODE (7), the controller 170 has a graphics pipeline that includes the binning pipeline 101-3, the first rendering pipeline 102-3, and the second rendering pipeline 102-4. Controlled to be performed at 10, in MODE (8), controller 170 includes binning pipeline 101-4, first rendering pipeline 102-3 and second rendering pipeline 102-4. However, the graphics pipeline can be controlled to run on the GPU 10. Hereinafter, embodiments relating to the graphics pipelines of MODE (1) to MODE (8) will be described in more detail.
8A and 8B are drawings for explaining the relationship between the number of tiles and the graphics processing performance (or efficiency) for dividing the three-dimensional object according to the embodiment.
FIG. 8A shows the case where the 3D object 815 is divided into 10x10 tiles 810, and FIG. 8B shows the case where the 3D object 815 is divided into 2x2 tiles 820. GPU In order to perform tile-based rendering or tile-based graphics pipeline on a tile-by-tile basis, rendering to the 3D object 815 illustrated in FIG. 8A is performed on 100 tiles. In contrast, the rendering for the 3D object 815 illustrated in Figure 8B is performed on only 4 tiles. Of the tiles 810 illustrated in Figure 8A, only about one-third overlaps the 3D object 815, so rendering will be skipped for the remaining two-thirds of the tiles 810. However, in the end, it goes without saying that binning (or tiling) for each of the 100 tiles 810 must be preceded. In comparison, each of the four tiles 820 illustrated in FIG. 8B overlaps the three-dimensional object 815, so that a parallel graphics process is performed for each of the four tiles 820.
On the other hand, many GPUs are currently manufactured by SIMT (single instruction multiple thread) architecture. The SIMT architecture is one of the methods that embodies an SPMD (single program multiple data) processor for processing a large amount of data in one program. The SIMT architecture can handle large amounts of data using smaller control hardware, but it is difficult and difficult to handle the thread divergence of each thread. The problem of low efficiency arises.
Comparing Figure 8A and Figure 8B above, the SIMT architecture can only complete its work by creating and processing 100 threads for the 100 tiles 810 in Figure 8A. Unlike, the SIMT architecture can complete the work for the four tiles 820 in Figure 8B by spawning and processing even fewer, just four threads. Since the size of one tile in FIG. 8A and the size of the object contained in one tile are smaller than those in FIG. 8B, the graphic data that must be processed is further in the case of FIG. 8A. It can be small. However, because of the much higher thread divergence, dividing the 3D object 815 with many tiles 810, as in Figure 8A, is not necessarily more advantageous than in Figure 8B. Absent. For that reason, modern GPUs embodied in the SIMT architecture are the reality of applying big tile sizes.
FIG. 9 is a drawing for explaining the relationship between the output control point of the output patch and the tessellated primitive according to the embodiment.
GPU as explained earlier in Figures 8A and 8B If a tile size with a larger 10 is used, the probability that patch 410 with a 3D object will be included in any one tile (tile0) 901 increases as the tile size increases. In the binning pipeline 101 (Figure 1), the tessellation pipeline tessellates the output patch 410 (output control point 415) and produces a larger number of tessellated primitives 425 to tessellate. Binning (or tiling) the rated primitive 425. Then, as illustrated in FIG. 9, the output patch 410 (output control point 415) contained within one tile 901 is a tessellated primitive, even if it is processed by the tessellation pipeline. The boundary 420 formed by the 425 can be located within one tile 902, similar to the boundary formed by the output patch 410. This is because the GPU 10 graphics pipeline is programmed so that the boundary 420 formed by the tessellated primitive 425 is within the boundary formed by the output patch 410. If this is not the case, it will be debugged by the compiler.
Therefore, the result of binning (or tiling) for output patch 410 (output control point 415) is tile (tile0) 901, which is the same as tile (tile0) 902, which is the result of binning for tessellated primitive 425. Is. This results in the final binning pipeline 101 (Fig. 1), even if the tessellation by the tessellator 123 (Fig. 6) is skipped in the tessellation pipeline of the binning pipeline 101 (Fig. 1). Can be assumed to be the same as if tessellation by tessellator 123 (Fig. 6) was not skipped.
On the other hand, the above assumption also holds for the tessellation factor (TF) (or tessellation level (TL)) for the output patch 410 (output control point 415). For example, boundaries formed by tessellated primitives generated by a low tessellation factor (eg, TF = 3) are formed by tessellated primitives generated by a high tessellation factor (eg, TF = 13). It is also included in the boundary. Therefore, in the tessellation pipeline of the binning pipeline 101 (FIG. 1), a lower tessellation factor (eg, eg, TF = 13) that is not determined by the hull shader 121 (FIG. 6). Even if TF = 3) is newly set and the tessellation pipeline is executed, when the tessellation factor (for example, TF = 13) determined by Halshader 121 (Fig. 6) is used, and newly set. It can be assumed that the binning (or tiling) results using the lower tessellation factor (eg, TF = 3) are the same.
On the other hand, a compiler that designs and inspects a graphics pipeline driven by GPU 10 will not work as assumed in Figure 9 if a graphics pipeline is designed (or programmed). Can be debugged and compiled to behave as the assumptions described in Figure 9.
The embodiments described in FIGS. 10 to 21 below operate on the premise of the above assumptions, but are not limited thereto.
FIG. 10 is a drawing for explaining a graphics pipeline carried out on a GPU according to an embodiment.
Referring to FIG. 10, the graphics pipeline including the binning pipeline 101-1 and the rendering pipeline 102-1 corresponds to MODE (1) described in FIG. On the other hand, the graphics pipeline illustrated in FIG. 10 will be described by connecting the hardware configurations of the GPU 10 described in FIG. 6, but only the configuration and the pipeline stage related to the embodiment will be described. Therefore, those skilled in the art will understand that other general purpose components and pipeline stages may be further included in addition to the configurations and pipeline stages described in FIG. Will be able to.
The vertex shader 115 uses the vertex 1001 stored in the memory 30 to perform the vertex shading 1011. The vertex shader 115 converts the vertex 1001 and transmits it to the hull shader 121 as an input control point.
The hull shader 121 performs hull shading 1012 to convert input control points representing low-order surfaces into output control points that make up a patch. The hull shader 121 can generate the output control points that make up the patch and at the same time determine the tessellation factor (TF). The hull shader 121 transmits information about the output control points of the output patch to the geometry shader 130 or the vina 135.
As described in FIG. 3, a typical tessellation pipeline 300 (FIG. 3) includes all stages of the hull shader 121, the tessellator 123, and the domain shader 125, but according to FIG. 10, the tessellator 123 And the stage of domain shader 125 is skipped. The reason is that the binning result of patch 410 (FIG. 9) and the binning result of the tessellated primitive 425 are the same, as was the assumption described earlier in FIG.
The geometry shader 130 is an optional component for performing geometry shading 1013 to generate additional vertices (or primitives) in addition to the output control points of the output patch output from the hull shader 121. Therefore, geometry shading 1013 is also skipped.
If geometry shading 1013 is skipped, Vina 135 utilizes the output primitives of the output patch output from hull shader 121 to perform binning 1014 or tiling. If geometry shading 1013 is done, Vina 135 uses the output primitives of the output patch output from geometry shader 130 to do binning 1014 or tiling. That is, the Vina 135 performs a depth test (or tile Z test) or the like and performs a binning 1014 that predicts a tile list showing information on the tiles to which each output primitive of the output patch belongs. At that time, the binned tile list is bin stream of memory 30 as a visibility stream. stream) Saved in 1002. A visibility stream is also a stream that indicates whether an input patch (or input control point, input primitive) or output patch (or output control point, output primitive) is visible in tiles. The visibility stream related to the input patch (or input control point, input primitive) is the input visibility stream, and the visibility stream related to the output patch (or output control point, output primitive) is. Defined as an output visibility stream.
As a result of binning 1014, Vina 135 determines whether or not the output primitive of the output patch output from Halshader 121 is included in one tile. If the output patch is contained in one tile, Vina 135 stores a visibility stream in bin stream 1002 that indicates that the output patch is contained in one tile by PASS (1). This completes the binning pipeline 101-1 for one output patch. That is, according to PASS (1), the tessellation 1015 of the tessellator 123 and the domain shading 1016 of the domain shader 125 are skipped.
However, if the output patch is not included in one tile, Vina 135 controls the output patch to have the tessellator 123 tessellating 1015 and the domain shader 125 domain shading 1016 by PASS (2). That is, PASS (2) is only advanced if the output patch is not included in one tile as a result of binning 1014.
The tessellator 123 uses the tessellation factor (TF) received from the hull shader 121 to perform a tessellation 1015 that calculates the uvw coordinates and weighted values in the barycentric coordinate system for the output control points.
The domain shader 125 utilizes the information related to the output control point and tessellation factor of the output patch received from the hull shader 121, and the uvw coordinate (w coordinate is optional) and the weight value received from the tessellator 123. Perform domain shading 1016 to generate tessellated vertices (or tessellated primitives).
The geometry shader 130 is an optional used to perform geometry shading 1017 to generate additional vertices (or primitives) from the tessellated vertices (or tessellated primitives) received from the domain shader 125. It is a component. Therefore, even with PASS (2), geometry shading 1017 is also skipped.
The Vina 135 utilizes the tessellated primitives (tessellated vertices) output from the domain shader 125 or geometry shader 130 by PASS (2) to perform binning 1018 or tiling. That is, the Vina 135 performs a depth test (or tile Z test), etc., and performs a binning 1018 that predicts a tile list showing information on the tiles to which each tessellated primitive (tessellated vertex) belongs. .. At that time, the binned tile list is stored in the bin stream 1002 of the memory 30 as a visibility stream.
GPU 10 will perform rendering pipeline 102-1 on a tile-by-tile basis when binning pipeline 101-1 is complete. Rendering pipeline 102-1 includes the input assembler 110, vertex shader 115, hull shader 121, tessellator 123, domain shader 125, geometry shader 130, rasterizer 140, and pixel shader of the graphics pipeline 100 described earlier in Figure 6. It may include performing a stage with 150 and output merger 160.
The binning pipeline 101-1 in FIG. 10 according to MODE (1) described above can skip the tessellation 1015 by the tessellator 123 if the output patch is contained in one tile, so the tessellated vertex. Do not produce (or a tessellated primitive). Therefore, when compared with the tessellation pipeline 300 (FIG. 3) of FIG. 3, which requires tessellation 1015 by the tessellator 123, the amount of calculation of graphic data can be further reduced.
FIG. 11 is a flow chart of a graphics pipeline performed on a GPU according to one embodiment. The flowchart of FIG. 11 is a flowchart for executing a graphics pipeline including a binning pipeline 101-1 and a rendering pipeline 102-1 according to MODE (1) described in FIG. Therefore, even if the content is omitted below, the content described in FIG. 10 is applied to the flowchart of FIG.
At the 1101 stage, the vertex shader 115 uses the vertex 1001 stored in the memory 30 to perform the vertex shading 1011.
At stage 1102, the hull shader 121 performs hull shading 1012, which transforms the input control points into the output control points that make up the patch. The hull shader 121 can generate an output control point and at the same time determine the tessellation factor (TF). The hull shader 121 transmits information about the output control points of the output patch to the vina 135.
At stage 1103, Vina 135 utilizes the output primitives of the output patch to perform binning 1014 or tiling.
At stage 1104, Vina 135 determines whether the output primitive of the output patch output from Halshader 121 is included in one tile as a result of binning 1014. If the output patch is included in one tile, go to step 1105. However, if the output patch is not included in one tile, go to stage 1107.
In stage 1105, if the output patch is included in one tile as a result of binning 1014, Vina 135 performs binning 1014 to predict a tile list that shows information about the tile to which each output primitive of the output patch belongs and is binned. The visibility stream related to the tile list is stored in the bin stream 1002 of the memory 30 (PASS (1)).
At stage 1106, the rasterizer 140, pixel shader 150 and output merger 160 carry out the rendering pipeline 102-1. Rendering pipeline 102-1 then includes stages with input assembler 110, vertex shader 115, hull shader 121, tessellator 123, domain shader 125 and geometry shader 130, similar to binning pipeline 101-1. You may.
In stage 1107, if the output patch is not included in one tile as a result of binning 1014, the tessellator 123 utilizes the tessellation factor (TF) received from the hull shader 121 to determine the center of gravity of the output patch at the output control point. Perform tessellation 1015 to calculate uvw coordinates and weighted values in the coordinate system (PASS (2)).
At stage 1108, the domain shader 125 provides information about the output control points and tessellation factors of the output patch received from the hull shader 121, and the uvw coordinates (w coordinates are optional) and weighted values received from the tessellator 123. Use it to perform domain shading 1016 to generate tessellated vertices (or tessellated primitives).
At stage 1109, Vina 135 utilizes a tessellated primitive (tessellated vertex) to perform binning 1018 or tiling. After the 1109 stage is completed, in the 1105 stage, the Vina 135 performs a depth test (or tile Z test), etc., and a tile showing information on the tile to which each tessellated primitive (tessellated vertex) belongs. Binning 1018 is performed to predict the list, and the visibility stream related to the binned tile list is stored in bin stream 1002 of memory 30.
FIG. 12 is a drawing for illustrating a graphics pipeline performed on a GPU by another embodiment.
Referring to FIG. 12, the graphics pipeline including the binning pipeline 101-2 and the rendering pipeline 102-1 corresponds to MODE (2) described in FIG. On the other hand, the graphics pipeline illustrated in FIG. 12 will be described by connecting the hardware configurations of the GPU 10 described in FIG. 6, but only the configurations related to the embodiment and the pipeline stage will be described. Therefore, those skilled in the art will understand that other general purpose components and pipeline stages may be further included in addition to the configurations and pipeline stages described in FIG. Will be able to.
The vertex shader 115 uses the vertex 1201 stored in the memory 30 to perform the vertex shading 1211. The vertex shader 115 converts the vertex 1201 and transmits it to the hull shader 121 as an input control point.
The hull shader 121 performs hull shading 1212, which converts an input control point representing a low-order surface into an output control point that constitutes a patch. The hull shader 121 can generate the output control points that make up the patch and at the same time determine the first tessellation factor (TF).
The tessellator 123 receives the first tessellation factor (TF) from the hull shader 121 and newly sets the second tessellation factor (TF) lower than the first tessellation factor (TF). Then, the tessellator 123 performs tessellation 1213 to calculate the uvw coordinates and the weighted value in the barycentric coordinate system related to the output control point by using the newly set second tessellation factor (TF).
As explained in FIG. 3, in a typical tessellation pipeline 300 (FIG. 3), the tessellator 123 used the tessellation factor (TF) determined by the hull shader 121 as is. However, even if the tessellator 123 utilizes a second tessellation factor (TF) that is lower than the first tessellation factor (TF) determined by the hull shader 121, as assumed earlier in FIG. 9, the binning result Are the same. In other words, the lower the tessellation factor, the smaller the number of primitives (triangles) produced, so the amount of computation on GPU 10 is reduced, and GPU 10 can obtain the same binning result.
The domain shader 125 uses the information related to the output control point and the second tessellation factor (TF) of the output patch, and the uvw coordinates (w coordinates are optional) and weighted values received from the tessellator 123 to tessellate. Perform domain shading 1214 to generate rated vertices (or tessellated primitives).
The geometry shader 130 is an optional used to perform geometry shading 1215 to generate additional vertices (or primitives) from the tessellated vertices (or tessellated primitives) received from the domain shader 125. It is a component. Therefore, geometry shading 1215 is also skipped.
The Vina 135 utilizes a tessellated primitive (tessellated vertex) with a second tessellation factor (TF) to perform binning 1216 or tiling. That is, the Vina 135 performs a depth test (or tile Z test), etc., and shows information on the tile to which each tessellated primitive (tessellated vertex) belongs with the second tessellation factor (TF). Perform binning 1216 to predict the tile list.
Vina 135 determines whether, as a result of binning 1216, a tile contains a tessellated primitive (tessellated vertex) with a second tessellation factor (TF).
If a tile contains a tessellated primitive (tessellated vertex) with a second tessellation factor (TF), the Vina 135 will be tessellated with a second tessellation factor (TF) by PASS (1). Store a visibility stream in binstream 1202 that indicates that a tile contains a rated primitive (tessellated vertex). This completes the binning pipeline 101-2 using the second tessellation factor (TF). That is, GPU 10 has even fewer operations because the binning pipeline 101-2 has been completed using a second tessellation factor (TF) that is lower than the first tessellation factor (TF) determined by Halshader 121. In quantity, the binning pipeline 101-2 can be completed.
If a tile does not contain a tessellated primitive (tessellated vertex) with a second tessellation factor (TF), Vina 135 controls PASS (2) to do tessellating 1217. To do.
According to PASS (2), the tessellator 123 utilizes the first tessellation factor (TF) originally determined by the hull shader 121, not the newly set second tessellation factor (TF), to control the output. Tessellation 1217 is performed to calculate the uvw coordinates and weighted values in the barycentric coordinate system related to the points.
The domain shader 125 uses the information related to the output control point and the first tessellation factor (TF) of the output patch, and the uvw coordinates (w coordinates are optional) and weighted values received from the tessellator 123 to tessellate. Perform domain shading 1218 to generate rated vertices (or tessellated primitives).
The geometry shader 130 is an optional used to perform geometry shading 1219 to generate additional vertices (or primitives) from the tessellated vertices (or tessellated primitives) received from the domain shader 125. It is a component. Therefore, geometry shading 1219 is also skipped.
The Vina 135 utilizes a tessellated primitive (tessellated vertex) with a first tessellation factor (TF) to perform binning 1220 or tiling. That is, the Vina 135 performs a depth test (or tile Z test), etc., and shows information on the tile to which each tessellated primitive (tessellated vertex) belongs with the first tessellation factor (TF). Perform binning 1220 to predict the tile list. The Vina 135 then stores the visibility stream associated with the tessellated primitive (tessellated vertex) in the bin stream 1202. This completes the binning pipeline 101-2 using the first tessellation factor (TF).
GPU 10 will perform rendering pipeline 102-1 on a tile-by-tile basis when binning pipeline 101-2 is completed. The rendering pipeline 102-1 includes the input assembler 110, vertex shader 115, hull shader 121, tessellator 123, domain shader 125, geometry shader 130, rasterizer 140, and pixel shader of the graphics pipeline 100 described above in FIG. It may include performing a stage with 150 and output merger 160.
The binning pipeline 101-2 of FIG. 12 according to MODE (2) described above was able to perform tessellating 1213 by the tessellator 123 by utilizing the low tessellator factor, so that the number of tessellating was even smaller. You can produce a vertex (or a tessellated primitive). Therefore, when compared with the tessellation pipeline 300 (FIG. 3) of FIG. 3, the amount of calculation of graphic data can be further reduced.
FIG. 13 is a flow chart of a graphics pipeline performed on a GPU by another embodiment. The flowchart of FIG. 13 is a flowchart for executing the graphics pipeline including the binning pipeline 101-2 and the rendering pipeline 102-1 according to MODE (2) described in FIG. Therefore, even if the content is omitted below, the content described in FIG. 12 is applied to the flowchart of FIG.
At the 1301 stage, the vertex shader 115 uses the vertex 1201 stored in the memory 30 to perform the vertex shading 1211.
At stage 1302, the hull shader 121 performs hull shading 1212, which transforms the input control points into the output control points that make up the patch. The hull shader 121 can generate an output control point and at the same time determine the first tessellation factor (TF).
At stage 1303, tessellator 123 utilizes a second tessellation factor (TF), which is lower than the first tessellation factor (TF) determined by the hull shader 121, to perform tessellation 1213 for the output control points of the output patch. ..
In step 1304, the domain shader 125 uses information about the output control point and second tessellation factor (TF) of the output patch, and the uvw coordinates (w coordinates are optional) and weighted values received from the tessellator 123. Then perform domain shading 1214 to generate tessellated vertices (or tessellated primitives).
At stage 1305, Vina 135 utilizes a tessellated primitive (tessellated vertex) with a second tessellation factor (TF) to perform binning 1216 or tiling.
At stage 1306, Vina 135 determines whether, as a result of binning 1216, a tile contains a tessellated primitive (tessellated vertex) with a second tessellation factor (TF). If a tile contains a tessellated primitive (tessellated vertex) with a second tessellation factor (TF), proceed to stage 1307. However, if a tile does not contain a tessellated primitive (tessellated vertex) with a second tessellation factor (TF), it proceeds to stage 1309.
In stage 1307, if one tile contains a primitive tessellated with a second tessellation factor (TF) (tessellated vertex), the Vina 135 is tessellated with a second tessellation factor (TF). Store a visibility stream in bin stream 1202 that indicates that a tile contains a primitive (tessellated vertex).
At stage 1308, the rasterizer 140, pixel shader 150 and output merger 160 carry out the rendering pipeline 102-1. Rendering pipeline 102-1 then includes stages with input assembler 110, vertex shader 115, hull shader 121, tessellator 123, domain shader 125 and geometry shader 130, similar to binning pipeline 101-2. You may.
In stage 1309, if a tile does not contain a tessellated primitive (tessellated vertex) with a second tessellation factor (TF), the tessellator 123 will use the newly set second tessellation factor (TF). The tessellation 1217 related to the output control point of the output patch is performed using the first tessellation factor (TF) determined by the hull shader 121, which is not TF).
At stage 1310, the domain shader 125 uses information about the output control points and first tessellation factor (TF) of the output patch, as well as the uvw coordinates (w coordinates are optional) and weighted values received from the tessellator 123. Then perform domain shading 1218 to generate tessellated vertices (or tessellated primitives).
At stage 1311, Vina 135 utilizes a tessellated primitive (tessellated vertex) with a first tessellation factor (TF) to perform binning 1220 or tiling. After the 1311 stage is completed, at the 1307 stage the Vina 135 stores the visibility stream for the tessellated primitive (tessellated vertex) in the bin stream 1202.
FIG. 14 is a drawing for illustrating a graphics pipeline performed on a GPU by yet another embodiment.
Referring to FIG. 14, the graphics pipeline including the binning pipeline 101-3 and the rendering pipeline 102-1 corresponds to MODE (3) described in FIG. On the other hand, the graphics pipeline illustrated in FIG. 14 will be described by connecting the hardware configurations of the GPU 10 described in FIG. 6, but only the configurations related to the embodiment and the pipeline stage will be described. Therefore, those skilled in the art will understand that other general purpose components and pipeline stages may be further included in addition to the configurations and pipeline stages described in FIG. Will be able to.
The vertex shader 115 uses the vertex 1401 stored in the memory 30 to perform the vertex shading 1411. The vertex shader 115 converts the vertex 1401 and transmits it to the hull shader 121 as an input control point.
The hull shader 121 performs hull shading 1412, which converts an input control point representing a low-order surface into an output control point that constitutes a patch. The hull shader 121 transmits information about the output control points of the output patch to the vina 135.
As described in FIG. 3, a typical tessellation pipeline 300 (FIG. 3) includes all stages of the hull shader 121, the tessellator 123 and the domain shader 125, but according to FIG. 14, the tessellator 123 And the stage of domain shader 125 is skipped. The reason is that the binning result of patch 410 (FIG. 9) and the binning result of the tessellated primitive 425 are the same, as was the assumption described earlier in FIG. Even if the binning results are not the same, the final Pixel rendering will be performed in the rendering pipeline 102-1 due to stages such as curling, clipping, and HSR (hidden surface removal). The result is the same.
The Vina 135 uses the output primitive of the output patch output from the Hull Shader 121 to perform binning 1413 or tiling. That is, the Vina 135 performs a depth test (or tile Z test) or the like and performs a binning 1413 that predicts a tile list showing information on the tiles to which each output primitive of the output patch belongs. At that time, the binned tile list is stored as a visibility stream in the bin stream (1402) of the memory 30.
Unlike the embodiments described in FIGS. 10 to 13, Vina 135 does not determine whether the output primitive of the output patch output from the hull shader 121 is included in one tile as a result of binning 1413. That is, the output primitives of the output patch may be contained in one tile or many tiles.
GPU 10 will perform rendering pipeline 102-1 on a tile-by-tile basis when binning pipeline 101-3 is completed. Rendering pipeline 102-1 includes vertex shading 1421 with vertex shader 115, hull shading 1422 with hull shader 121, tessellating 1423 with tessellator 123, domain shading 1424 with domain shader 125, and optional geometry shading 1425 with geometry shader 130. It may include stages of rasterizing 1426 with rasterizer 140 and pixel shading 1427 with pixel shader 150. The result of pixel shading 1427 by pixel shader 150 is stored in buffer 1403.
The graphics pipeline of FIG. 14 according to MODE (3) described above can skip the tessellation by the tessellator 123 in the binning pipeline 101-3, so that the tessellated vertex (or tesse) can be skipped. Do not produce rated primitives). Therefore, when compared with the tessellation pipeline 300 (FIG. 3) of FIG. 3, which requires tessellation by the tessellator 123, the amount of calculation of graphic data can be further reduced.
FIG. 15 is a flow chart of a graphics pipeline performed on a GPU by yet another embodiment. The flowchart of FIG. 15 is a flowchart for executing the graphics pipeline including the binning pipeline 101-3 and the rendering pipeline 102-1 according to MODE (3) described in FIG. Therefore, even if the content is omitted below, the content described in FIG. 14 is applied to the flowchart of FIG.
Pipeline 1510, which includes stages 1511 to 1514, corresponds to binning pipeline 101-3, and pipeline 1520, which contains 1521 stages, corresponds to rendering pipeline 102-1.
At the 1511 stage, the vertex shader 115 uses the vertex 1401 stored in the memory 30 to perform the vertex shading 1411.
At stage 1512, the hull shader 121 performs hull shading 1412, which transforms the input control points into the output control points that make up the patch.
At stage 1513, the Vina 135 performs binning 1413 or tiling with respect to the output control points of the output patch.
At stage 1514, Vina 135 stores a tile list showing information about the tiles to which each output primitive of the output patch belongs as a result of binning 1413 in bin stream 1402 of memory 30 as a visibility stream. Unlike the embodiments described in FIGS. 10 to 13, Vina 135 does not determine whether the output primitive of the output patch output from the hull shader 121 is contained in one tile. That is, the output primitives of the output patch may be contained in one tile or many tiles.
At stage 1521, GPU 10 will perform the rendering pipeline 102-1 on a tile-by-tile basis. Rendering pipeline 102-1 includes vertex shading 1421 with vertex shader 115, hull shading 1422 with hull shader 121, tessellating 1423 with tessellator 123, domain shading 1424 with domain shader 125, and optional geometry shading 1425 with geometry shader 130. It may include stages of rasterizing 1426 with rasterizer 140 and pixel shading 1427 with pixel shader 150.
FIG. 16 is a drawing for illustrating a graphics pipeline performed on a GPU by yet another embodiment.
Referring to FIG. 16, the graphics pipeline including the binning pipeline 101-4 and the rendering pipeline 102-1 corresponds to MODE (4) described in FIG. On the other hand, the graphics pipeline illustrated in FIG. 12 will be described by connecting the hardware configurations of the GPU 10 described in FIG. 6, but only the configurations related to the embodiment and the pipeline stage will be described. Therefore, those skilled in the art will understand that other general purpose components and pipeline stages may be further included in addition to the configurations and pipeline stages described in FIG. Will be able to.
The vertex shader 115 uses the vertex 1601 stored in the memory 30 to perform the vertex shading 1611. The vertex shader 115 converts the vertex 1601 and transmits it to the hull shader 121 as an input control point.
The hull shader 121 performs hull shading 1612 to convert input control points representing low-order surfaces into output control points that make up a patch. The hull shader 121 can generate the output control points that make up the patch and at the same time determine the first tessellation factor (TF).
The tessellator 123 receives the first tessellation factor (TF) from the hull shader 121 and newly sets the second tessellation factor (TF) lower than the first tessellation factor (TF). Then, the tessellator 123 performs tessellation 1613 to calculate the uvw coordinates and the weighted value in the barycentric coordinate system related to the output control point by using the newly set second tessellation factor (TF).
As explained in FIG. 3, in a typical tessellation pipeline 300 (FIG. 3), the tessellator 123 used the tessellation factor (TF) determined by the hull shader 121 as is. However, even if the tessellator 123 utilizes a second tessellation factor (TF) that is lower than the first tessellation factor (TF) determined by the hull shader 121, as assumed earlier in FIG. 9, the binning result Are the same. Even if the binning results are not the same, the final Pixel rendering results are the same because the stages such as curling, clipping, and HSR are performed in the rendering pipeline 102-1.
The domain shader 125 uses the information related to the output control point and the second tessellation factor (TF) of the output patch, and the uvw coordinates (w coordinates are optional) and weighted values received from the tessellator 123 to tessellate. Perform domain shading 1614) to generate rated vertices (or tessellated primitives).
The geometry shader 130 is an optional used to perform geometry shading 1615 to generate additional vertices (or primitives) from the tessellated vertices (or tessellated primitives) received from the domain shader 125. It is a component. Therefore, geometry shading 1615 is also skipped.
The Vina 135 utilizes a tessellated primitive (tessellated vertex) with a second tessellation factor (TF) to perform binning 1616) or tiling. That is, the Vina 135 performs a depth test (or tile Z test), etc., and shows information on the tile to which each tessellated primitive (tessellated vertex) belongs with the second tessellation factor (TF). Perform binning 1616 to predict the tile list. At that time, the binned tile list is stored in the bin stream 1602 of the memory 30 as a visibility stream.
Unlike the embodiments described in FIGS. 10 to 13, the Vina 135 contains a tessellated primitive (tessellated vertex) in the second tessellation factor (TF) as a result of binning 1616 in one tile. Do not judge whether or not it will be done. That is, a tessellated primitive (tessellated vertex) with a second tessellation factor (TF) may be contained in one tile or many tiles.
GPU 10 will perform rendering pipeline 102-1 on a tile-by-tile basis when binning pipeline 101-4 is completed. Rendering pipeline 102-1 includes vertex shading 1621 with vertex shader 115, hull shading 1622 with hull shader 121, tessellating 1623 with tessellator 123, domain shading 1624 with domain shader 125, and optional geometry shading 1625 with geometry shader 130. It may include stages of rasterizing 1626 with rasterizer 140 and pixel shading 1627 with pixel shader 150. The result of pixel shading 1627 by pixel shader 150 is stored in buffer 1603.
The binning pipeline 101-4 of FIG. 16 according to MODE (4) described above can be tessellated 1613 by the tessellator 123 by utilizing the low tessellator factor, so that the number of tessellated is even smaller. You can produce a vertex (or a tessellated primitive). Therefore, when compared with the tessellation pipeline 300 (FIG. 3) of FIG. 3, the amount of calculation of graphic data can be further reduced.
FIG. 17 is a flow chart of a graphics pipeline performed on the GPU by yet another embodiment. The flowchart of FIG. 17 is a flowchart for executing the graphics pipeline including the binning pipeline 101-4 and the rendering pipeline 102-1 according to MODE (4) described with reference to FIG. Therefore, even if the content is omitted below, the content described in FIG. 16 is applied to the flowchart of FIG.
Pipeline 1710, which includes 1711 to 1716 stages, corresponds to the binning pipeline 101-4, and pipeline 1720, which contains 1721 stages, corresponds to the rendering pipeline 102-1.
At the 1711 stage, the vertex shader 115 uses the vertex 1601 stored in the memory 30 to perform the vertex shading 1611.
At stage 1712, the hull shader 121 performs hull shading 1612, which transforms the input control points into the output control points that make up the patch.
At stage 1713, tessellator 123 utilizes a second tessellation factor (TF), which is lower than the first tessellation factor (TF) determined by the hull shader 121, to perform tessellation 1613 for the output control points of the output patch. ..
In stage 1714, the domain shader 125 uses information about the output control point and second tessellation factor (TF) of the output patch, and the uvw coordinates (w coordinates are optional) and weighted values received from the tessellator 123. Then perform domain shading 1614) to generate tessellated vertices (or tessellated primitives).
At stage 1715, Vina 135 utilizes a tessellated primitive (tessellated vertex) with a second tessellation factor (TF) to perform binning 1616 or tiling.
At stage 1716, Vina 135 stores a tile list showing information about the tiles to which each output primitive of the output patch belongs as a result of binning 1616 in bin stream 1602 of memory 30 as a visibility stream. Unlike the embodiments described in FIGS. 10 to 13, Vina 135 does not determine whether the output primitive of the output patch output from the hull shader 121 is contained in one tile. That is, the output primitives of the output patch may be contained in one tile or many tiles.
At stage 1721, GPU 10 implements the rendering pipeline 102-1 on a tile-by-tile basis. Rendering pipeline 102-1 includes vertex shading 1621 with vertex shader 115, hull shading 1622 with hull shader 121, tessellating 1623 with tessellator 123, domain shading 1624 with domain shader 125, and optional geometry shading 1625 with geometry shader 130. It may include stages of rasterizing 1626 with rasterizer 140 and pixel shading 1627 with pixel shader 150. At that time, the tessellation 1623 and the domain shading 1624 are performed using the first tessellation factor (TF).
FIG. 18 is a drawing for illustrating a graphics pipeline performed on a GPU by yet another embodiment.
Referring to FIG. 18, the graphics pipeline including the binning pipeline 101-3 and the rendering pipeline 102-2 corresponds to MODE (5) described in FIG. On the other hand, the graphics pipeline illustrated in FIG. 18 will be described by connecting the hardware configurations of the GPU 10 described in FIG. 6, but only the configurations related to the embodiment and the pipeline stage will be described. Therefore, those skilled in the art will understand that other general purpose components and pipeline stages may be further included in addition to the configurations and pipeline stages described in FIG. Will be able to.
The graphics pipeline illustrated in FIG. 18 was crossed into multiple tiles (tile A, tile B, tile C and tile D) illustrated in FIG. 19 for convenience of explanation. ) It is assumed that it is performed for patch 1900.
The vertex shader 115 uses the vertex 1801 stored in the memory 30 to perform the vertex shading 1811. The vertex shader 115 converts the vertex 1801 and transmits it to the hull shader 121 as an input control point.
The hull shader 121 performs hull shading 1812 to convert input control points representing low-order surfaces into output control points that make up patch 1900. The hull shader 121 transmits information about the output control points of the output patch 1900 to the vina 135.
As described in FIG. 3, a typical tessellation pipeline 300 (FIG. 3) includes all stages of the hull shader 121, the tessellator 123 and the domain shader 125, but according to FIG. 18, the tessellator 123 And the stage of domain shader 125 is skipped. The reason is that the binning result of patch 410 (FIG. 9) and the binning result of the tessellated primitive 425 are the same, as was the assumption described earlier in FIG. Even if the binning results are not the same, the final Pixel rendering results are the same because stages such as curling, clipping, and HSR are performed in the rendering pipeline 102-2.
The Vina 135 utilizes the output primitives of the output patch 1900 output from the Halshader 121 to perform binning 1813 or tiling. That is, the Vina 135 performs a depth test (or tile Z test) or the like and performs a binning 1813 that predicts a tile list showing information on the tiles to which each output primitive of the output patch 1900 belongs. At that time, the binned tile list is stored in the bin stream 1802 of the memory 30 as a visibility stream.
Vina 135 determines whether the output primitives of output patch 1900 output from the hull shader 121 as a result of binning 1813 are included in multiple tiles (eg, tile A, tile B, tile C and tile D in FIG. 19). Judge that. That is, Vina 135 determines tile-crossing for the output primitives of output patch 1900.
If output patch 1900 is tile crossed (or if output patch 1900 is included in multiple tiles tile A, tile B, tile C and tile D), Vina 135 will have multiple tiles (tile A, tile B). , Tile C and tile D) Schedule the rendering order. As a result of scheduling, Vina 135 determines the tile (tile A) scheduled in the first rendering order among the plurality of tiles as the reference tile. Here, the reference tile is assumed to be tile A located at the uppermost left end of the plurality of tiles, but the reference tile is not limited to that, and the reference tiles are the lower left tile, the upper right tile, and the like. It can be changed according to various predetermined criteria such as the lower right tile and the middle tile. Vina 135 has a rendering pipeline 102-2 for reference tile A, which has neighboring tiles (tile B, tile C and tile). D) Schedule the execution timing of rendering pipeline 102-2 so that it is executed before. Is the rendering pipeline 102-2 for each of multiple tiles (tile A, tile B, tile C and tile D) sequentially performed by one processor unit (or one processor core) in GPU 10? , Or performed in parallel by multiple processor units (or multiple processor cores) within the GPU 10. Such reference tile determination and rendering timing scheduling may be done by controller 170, or other configuration within GPU 10, rather than Vina 135. That is, the subject of determining the reference tile and performing the rendering timing scheduling is not limited by any one of them.
When the output patch 1900 is tile crossed, Vina 135 stores the determination result of the reference tile (tile A) and the scheduling result of the rendering timing in the memory 30.
In contrast, if the output patch 1900 is not tile crossed (or if the output patch 1900 is contained in only one tile), Vina 135 does not determine the reference tile and schedule the rendering timing.
GPU 10 will perform rendering pipeline 102-2 on a tile-by-tile basis when binning pipeline 101-3 is completed. At that time, in the binning pipeline 101-3, it was determined that the reference tile is tile A, so GPU 10 first performs the rendering pipeline 102-2 for the reference tile (tile A).
Rendering pipeline 102-2 for the reference tile (tile A) includes vertex shading 1821 with vertex shader 115, hull shading 1822 with hull shader 121, tessellation 1823 with tessellator 123, domain shading 1824 with domain shader 125, and geometry shader 130. It may include a stage of optional geometry shading 1825, rasterizing 1826 with rasterizer 140, and pixel shading 1827 with pixel shader 150. The result of pixel shading 1827 with pixel shader 150 is stored in buffer 1803.
On the other hand, in the rendering pipeline 102-2 for the reference tile (tile A), binning 1828 by Vina 135 is added. More specifically, Vina 135 is whether patch 1900 is visible on each of the adjacent tiles (tile B, tile C and tile D) adjacent to the reference tile (tile A). Perform binning 1828 to generate a visibility stream that indicates. Here, the visibility stream may include all types of visibility streams described herein. GPU 10 will thereby utilize the visibility stream for the adjacent tiles (tile B, tile C and tile D) generated in the rendering pipeline 102-2 for the reference tile (tile A) to take advantage of the adjacent tiles (tile B, tile C and tile D). tile B, tile C and tile D) When the rendering pipeline 102-2 for each is performed independently, it can only handle visible vertices, visible primitives or visible patches, so it can handle only visible vertices, visible primitives or visible patches. Adjacent tile (tile B, tile) C and tile D) The amount of data calculation in the rendering pipeline 102-2 for each is reduced.
The graphics pipeline of FIG. 18 according to MODE (5) described above can skip the tessellation by the tessellator 123 in the binning pipeline 101-3, so that the tessellated vertex (or tesse) can be skipped. Do not produce rated primitives). Therefore, when compared with the tessellation pipeline 300 (FIG. 3) of FIG. 3, which requires tessellation by the tessellator 123, the amount of calculation of graphic data can be further reduced.
FIG. 19 is a flow chart of a graphics pipeline performed on the GPU by yet another embodiment. The flowchart of FIG. 19 is a flowchart that executes a graphics pipeline including a binning pipeline 101-3 and a rendering pipeline 102-2 according to MODE (5) described with reference to FIG. Therefore, even if the content is omitted below, the content described in FIG. 18 is applied to the flowchart of FIG.
Pipeline 1910 containing 1911 to 1915 corresponds to Binning Pipeline 101-3, and Pipeline 1920 containing 1921 to 1924 corresponds to Rendering Pipeline 102-2 for reference tile (tile A). Correspond.
At the 1911 stage, the vertex shader 115 uses the vertex 1801 stored in the memory 30 to perform the vertex shading 1811.
At stage 1912, the hull shader 121 performs hull shading 1812, which transforms the input control points into the output control points that make up patch 1900.
At stage 1913, Vina 135 performs binning 1813 or tiling with respect to the output control points of output patch 1900. Then, as a result of binning 1813, the vina 135 stores a tile list showing information on the tiles to which each output primitive of the output patch 1900 belongs in the bin stream 1802 of the memory 30.
At stage 1914, Vina 135 determines whether the output primitives of output patch 1900 output from Halshader 121 are included in multiple tiles (eg tile A, tile B, tile C and tile D). To do. That is, Vina 135 determines whether tile crossing is required for the output primitive of output patch 1900. If output patch 1900 is tile crossed, it goes to stage 1915, and if output patch 1900 is not tile crossed, it goes to stage 1930.
At stage 1915, Vina 135 schedules the rendering order of multiple tiles (tile A, tile B, tile C and tile D). As a result of scheduling, Vina 135 can determine the tile (tile A) scheduled in the first rendering order among the plurality of tiles as the reference tile.
At stage 1921, the vertex shader 115 performs vertex shading 1821 on the reference tile (tile A) using the vertex 1801 stored in memory 30. In stage 1922, GPU 10 performs a tessellation pipeline for the reference tile (tile A), including hull shading 1822 with hull shader 121, tessellation 1823 with tessellator 123, and domain shading 1824 with domain shader 125. ..
In stage 1923, GPU 10 renders the tessellated primitives generated by the tessellation pipeline against the reference tile (tile A). That is, GPU 10 performs rasterizing 1826 and pixel shading 1827 on the reference tile (tile A).
At stage 1924, Vina 135 performs binning 1828 to generate a visibility stream indicating whether patch 1900 is visible on each of the adjacent tiles (tile B, tile C and tile D), and the adjacent tiles. Save the visibility stream for (tile B, tile C and tile D). In Figure 19, GPU 10 leverages the stored visibility stream to perform rendering pipelines 102-2 for adjacent tiles (tile B, tile C and tile D), respectively, even if not shown. To do. Then, in the rendering pipeline 102-2 for the adjacent tiles (tile B, tile C and tile D), the vertices visible by the visibility stream for the adjacent tiles (tile B, tile C and tile D) are visible. Only simple primitives or visible patches are processed.
At stage 1930, GPU 10 has a rendering pipeline for tiles that contain output patch 1900, if output patch 1900 is not tile crossed (if output patch 1900 is contained in only one tile). Perform 102-2.
FIG. 20 is a drawing for illustrating a graphics pipeline performed on a GPU by yet another embodiment.
Referring to FIG. 20, the graphics pipeline including the binning pipeline 101-4 and the rendering pipeline 102-2 corresponds to MODE (6) described in FIG. On the other hand, the graphics pipeline illustrated in FIG. 20 will be described by connecting the hardware configurations of the GPU 10 described in FIG. 6, but only the configurations related to the embodiment and the pipeline stage will be described. Therefore, those skilled in the art will understand that other general purpose components and pipeline stages may be further included in addition to the configurations and pipeline stages described in FIG. Will be able to.
For the graphics pipeline illustrated in Figure 20, for convenience of explanation, patch 2100 crossed into multiple tiles (tile A, tile B, tile C and tile D), illustrated in Figure 21. It is assumed that it is performed against.
The vertex shader 115 uses the vertex 2001 stored in the memory 30 to perform the vertex shading 2011. The vertex shader 115 transforms the vertex 2001 and transmits it to the hull shader 121 as an input control point.
The hull shader 121 performs hull shading 2012 to convert input control points representing low-order surfaces into output control points that make up patch 2100. The hull shader 121 can generate the output control points that make up patch 2100 and at the same time determine the first tessellation factor (TF).
The tessellator 123 receives the first tessellation factor (TF) from the hull shader 121 and newly sets the second tessellation factor (TF) lower than the first tessellation factor (TF). Then, the tessellator 123 performs tessellation 2013 to calculate the uvw coordinates and the weighted value in the barycentric coordinate system related to the output control point by using the newly set second tessellation factor (TF).
The domain shader 125 utilizes the information related to the output control point and the second tessellation factor (TF) of the output patch 2100, and the uvw coordinates (w coordinates are optional) and weighted values received from the tessellator 123. Perform domain shading 2014 to generate tessellated vertices (or tessellated primitives).
The geometry shader 130 is an optional used to perform geometry shading 2015 to generate additional vertices (or primitives) from the tessellated vertices (or tessellated primitives) received from the domain shader 125. It is a component. Therefore, geometry shading 2015 is also skipped.
The Vina 135 utilizes a tessellated primitive (tessellated vertex) with a second tessellation factor (TF) to perform binning 2016) or tiling. That is, the Vina 135 performs a depth test (or tile Z test), etc., and shows information on the tile to which each tessellated primitive (tessellated vertex) belongs with the second tessellation factor (TF). Perform Binning 2016 to predict the tile list. At that time, the binned tile list is stored in the bin stream 2002 of the memory 30 as a visibility stream.
As a result of Binning 2016, Vina 135 has multiple tiles (for example, tile A, tile B, tile C and tile) with tessellated primitives (tessellated vertices) in the second tessellation factor (TF). Judge whether it is included in D). That is, the Vina 135 determines the tile crossing for the tessellated primitive (tessellated vertex) by the second tessellation factor (TF).
When a tessellated primitive (tessellated vertex) is tile crossed with the 2nd Tessellation Factor (TF) (or the output patch is tile A, tile B, tile C and tile D) Vina 135 schedules the rendering order of multiple tiles (tile A, tile B, tile C and tile D). As a result of scheduling, Vina 135 can determine the tile A scheduled in the first rendering order among the plurality of tiles as the reference tile. Here, it is assumed that the reference tile is tile A located at the uppermost left end of the plurality of tiles, but the reference tile is not limited to that, and the reference tiles are the lower left tile, the upper right tile, and the lower right tile. It may vary according to various predetermined criteria such as tiles, middle tiles. Vina 135 has a rendering pipeline 102-2 for the reference tile (tile A) but adjacent tiles (tile B, tile C and tile). D) Schedule the execution timing of rendering pipeline 102-2 so that it is executed before. Is the rendering pipeline 102-2 for each of multiple tiles (tile A, tile B, tile C and tile D) sequentially performed by one processor unit (or one processor core) in GPU 10? , Or performed in parallel by multiple processor units (or multiple processor cores) within the GPU 10. Such reference tile determination and rendering timing scheduling is also accomplished by controller 170, or other configuration within GPU 10, which is not Vina 135. That is, the entity that determines the reference tile and schedules the rendering timing is not limited by any one of them.
When a tessellated primitive (tessellated vertex) is tile crossed by the second tessellation factor (TF), Vina 135 remembers the decision result of the reference tile (tile A) and the rendering timing scheduling result. Save to 30.
In contrast, if the Tessellated Primitive (Tessellated Vertex) with the Second Tessellation Factor (TF) is not tile-crossed (or if the output patch is contained in only one tile), Vina 135 Does not determine the reference tile and schedule the rendering timing.
GPU 10 will perform rendering pipeline 102-2 on a tile-by-tile basis when binning pipeline 101-4 is completed. At that time, in the binning pipeline 101-4, it was determined that the reference tile is tile A, so GPU 10 first performs the rendering pipeline 102-2 for the reference tile (tile A).
Rendering pipeline 102-2 for the reference tile (tile A) includes vertex shading 2021 with vertex shader 115, hull shading 2022 with hull shader 121, tessellation 2023 with tessellator 123, domain shading 2024 with domain shader 125, and geometry shader 130. It may include stages of optional geometry shading 2025, rasterizing 2026 with rasterizer 140, and pixel shading 2027 with pixel shader 150. The result of pixel shading 2027 by pixel shader 150 is stored in buffer 2003.
On the other hand, in the rendering pipeline 102-2 for the reference tile (tile A), binning 2028 by Vina 135 is additionally performed. More specifically, Vina 135 shows whether patch 2100 is visible on each of the adjacent tiles (tile B, tile C and tile D) adjacent to the reference tile (tile A). Perform binning 2028 to generate sex streams. Here, the visibility stream may include all types of visibility streams described herein. GPU 10 will thereby utilize the visibility stream for the adjacent tiles (tile B, tile C and tile D) generated in the rendering pipeline 102-2 for the reference tile (tile A) to take advantage of the adjacent tiles (tile B, tile C and tile D). tile B, tile C and tile D) When the rendering pipeline 102-2 for each is performed independently, it can only handle visible vertices, visible primitives or visible patches, so adjacent tiles (tile B, tile CAndbeauty tile D) The amount of data calculated in the rendering pipeline 102-2 for each is reduced.
In the graphics pipeline of FIG. 20 according to MODE (6) described above, only a small number of tessellated primitives are produced in the binning pipeline 101-4 with a low tessellation factor. Therefore, when compared with the tessellation pipeline 300 (FIG. 3) of FIG. 3, the amount of calculation of graphic data can be further reduced.
FIG. 21 is a flow chart of a graphics pipeline performed on the GPU by yet another embodiment. The flowchart of FIG. 21 is a flowchart for executing the graphics pipeline including the binning pipeline 101-4 and the rendering pipeline 102-2 according to MODE (6) described with reference to FIG. Therefore, even if the content is omitted below, the content described in FIG. 20 is applied to the flowchart of FIG. 21.
Pipeline 2110, which contains 2111 to 2117 stages, corresponds to Binning Pipeline 101-4, and Pipeline 2120, which contains 2121 to 2124 stages, is in Rendering Pipeline 102-2 for reference tile (tile A). Correspond.
At stage 2111, the vertex shader 115 uses the vertex 2001 stored in memory 30 to perform vertex shading 2011.
At stage 2112, the hull shader 121 performs hull shading 2012, which transforms the input control points into the output control points that make up patch 2100.
At stage 2113, the tessellator 123 utilizes a second tessellation factor (TF) lower than the first tessellation factor (TF) determined by the hull shader 121 to tessellate 2013 for the output control points of output patch 2100. Do.
At stage 2114, the domain shader 125 provides information about the output control points and second tessellation factor (TF) of output patch 2100, as well as the uvw coordinates (w coordinates are optional) and weighted values received from the tessellator 123. Use it to do domain shading 2014 to generate tessellated vertices (or tessellated primitives).
At stage 2115, Vina 135 utilizes a tessellated primitive (tessellated vertex) with a second tessellation factor (TF) to perform binning 2016 or tiling. Then, as a result of Binning 2016, Vina 135 provides a tile list showing information on the tiles to which each of the tessellated primitives (tessellated vertices) by the second tessellation factor (TF) belongs, and binstreams of memory 30. Save in 2002.
At stage 2116, Vina 135 has a second tessellation factor (TF) tessellated primitive (tessellated vertex) on multiple tiles (eg tile A, tile B, tile C and tile D). Judge whether it is included or not. That is, the Vina 135 determines the tile crossing for the tessellated primitive (tessellated vertex) by the second tessellation factor (TF). If a tessellated primitive with a 2nd tessellation factor (TF) is tile crossed, proceed to 2117 steps with a tessellated primitive with a 2nd tessellation factor (TF) (tessellated). If the rated vertex) is not tile crossed, proceed to stage 2130.
At stage 2117, Vina 135 schedules the rendering order of multiple tiles (tile A, tile B, tile C and tile D). As a result of scheduling, Vina 135 can determine the tile (tile A) scheduled in the first rendering order among the plurality of tiles as the reference tile.
At stage 2121, the vertex shader 115 performs vertex shading 2021 on the reference tile (tile A) using the vertex 2001 stored in memory 30.
At stage 2122, GPU 10 performs a tessellation pipeline for the reference tile (tile A), including hull shading 2022 with hull shader 121, tessellation 2023 with tessellator 123, and domain shading 2024 with domain shader 125. ..
At stage 2123, GPU 10 renders the tessellated primitives generated by the tessellation pipeline against the reference tile (tile A). That is, GPU 10 performs rasterizing 2026 and pixel shading 2027 on the reference tile (tile A).
At stage 2124, Vina 135 performs binning 2028 to generate a visibility stream indicating whether patch 2100 is visible on each of the adjacent tiles (tile B, tile C and tile D). Save the visibility stream for (tile B, tile C and tile D). In Figure 21, GPU 10 leverages the stored visibility stream to perform rendering pipelines 102-2 for adjacent tiles (tile B, tile C and tile D), respectively, even if not shown. To do. Then, in the rendering pipeline 102-2 for the adjacent tiles (tile B, tile C and tile D), the visible vertex, visible by the visibility stream for the adjacent tiles (tile B, tile C and tile D). Only typical primitives or visible patches are processed.
At stage 2130, GPU 10 was tessellated with a second tessellation factor (TF) when the tessellated primitives (tessellated vertices) were not tilecrossed (tessellated with a second tessellation factor (TF)). For tiles that contain a primitive (tessellated vertex) and a tile that contains a tessellated primitive (tessellated vertex) with a second tessellation factor (TF) Perform rendering pipeline 102-2.
FIG. 22 is a drawing for explaining a case where the tile list to which the patch belongs and the tile list to which the tessellated primitive belongs are different as a result of tessellation of the patch depending on other embodiments.
Generally, in the tessellation pipeline 300 (FIG. 3), the hull shader 121 and the domain shader 125 are known to be programmable, while the tessellator 123 is not known to be programmable. Therefore, in some cases, developers coding the tessellation pipeline 300 (Figure 3) will find the output patch 2213 in one tile (tile 0), while the tessellated primitive 2225 has two tiles (tile 0). You accidentally program the hull shader 121 and domain shader 125 as included in tile 0 and tile 1). That is, in the tessellated primitive 2225, there is a mispredicted primitive 2230 in. Figures 23 and 24 below describe the graphics pipeline when a falsely predicted tile list is found in the binning pipeline during the rendering pipeline.
FIG. 23 is a drawing for illustrating a graphics pipeline performed on a GPU by yet another embodiment.
Referring to FIG. 23, the binning pipeline 101-3, and the graphics pipeline including the first rendering pipeline 102-3 and the second rendering pipeline 102-4, are the MODE (described in FIG. 7). Corresponding to 7), the graphics pipeline including the binning pipeline 101-4 and the first rendering pipeline 102-3 and the second rendering pipeline 102-4 is the MODE (8) described in FIG. ) Corresponds. On the other hand, the graphics pipeline illustrated in FIG. 23 will be described by connecting the hardware configurations of the GPU 10 described in FIG. 6, but only the configurations related to the embodiment and the pipeline stage will be described. Therefore, those skilled in the art will understand that other general purpose components and pipeline stages may be further included in addition to the configurations and pipeline stages described in FIG. Will be able to.
GPU 10 carries out the binning pipeline 101-3 or 101-4 described earlier in the drawing. The binning results of the binning pipeline 101-3 or 101-4 are stored as a visibility stream in bin stream 2302 of memory 30. GPU 10 then carries out the first rendering pipeline 102-3. It is assumed that the first rendering pipeline 102-3 is performed on a tile-by-tile basis, and in FIG. 23, the current tile performed on the first rendering pipeline 102-3 is tile X.
The vertex shader 115 performs vertex shading 2311 using the vertex 2301 belonging to tile X based on the binning result of the bin stream 2302. The vertex shader 115 converts the vertex 2301 and transmits it to the hull shader 121 as an input control point.
The hull shader 121 performs hull shading 2312, which converts an input control point representing a low-order surface into an output control point that constitutes a patch. The hull shader 121 can generate the output control points that make up the patch and at the same time determine the tessellation factor (TF).
The tessellator 123 uses the tessellation factor (TF) received from the hull shader 121 to perform tessellation 2313, which calculates the uvw coordinates and weighted values in the barycentric coordinate system related to the output control points.
The domain shader 125 is tessellated using information about the output control points and tessellation factor (TF) of the output patch, and the uvw coordinates (w coordinates are optional) and weights received from the tessellator 123. Perform domain shading 2314 to generate a patch (or tessellated primitive).
The geometry shader 130 is an optional used to perform geometry shading 2315 to generate additional vertices (or primitives) from the tessellated vertices (or tessellated primitives) received from the domain shader 125. It is a component. Therefore, geometry shading 2315 is also skipped.
The rasterizer 140 performs rasterizing 2316 on the tessellated vertex (or tessellated primitive) contained in the tile X, which is currently the tile, and the pixel shader 150 is the pixel corresponding to the rasterized primitive. Pixel shading 2317 for. The result of pixel shading 2317 for the current tile tile X is stored in buffer 2304.
Vina 135 binning 2318 or tiling on the tessellated primitives (tessellated vertices) currently contained in the tile X, and the result of binning 2318 is the binning pipeline 101-3 or 101. Mispredicted of the tile positions of the tessellated primitives (tessellated vertices) contained in tile X by comparing with the tile list stored in binstream 2302 by -4. Determine if the tile exists. If there are no mispredicted tiles, GPU 10 will perform the first rendering pipeline 102-3 for the next tile in tile X. However, if there are mispredicted tiles, Vina 135 will either update the tile list for the mispredicted tiles to binstream 2302, or mispredicted bin. stream) Save to 2303. Here, updating the tile list related to the mispredicted tile to Binstream 2302 is performed when the rendering for the mispredicted tile has not started, and the tile related to the mispredicted tile is updated. Saving the list to the mispredicted binstream 2303 occurs when the rendering for the mispredicted tile is complete.
GPU 10 has a mispredicted tile list in the mispredicted binstream 2303 after completing the first rendering pipeline 102-3 on a tile-by-tile basis for all tiles. Determine if it exists. If a mispredicted tile list is present in the mispredicted binstream 2303, GPU 10 will use the second rendering pipeline 102-for the tiles contained in the mispredicted tile list. Perform 4. Here, the tiles included in the mispredicted tile list are also called super tiles. The second rendering pipeline 102-4 is performed on a tile-by-tile basis or on a super-tile basis for tiles included in the mispredicted tile list. That is, GPU 10 is one tile or super tile, with vertex shader 115 for vertex shading 2321, hull shader 121 for hull shading 2322, tessellator 123 for tessellating 2323, domain shader 125 for domain shading 2324, and geometry shader 130 for optional. A second rendering pipeline 102-4 can be performed that includes stages of geometry shading 2325, rasterizing 2326 with rasterizer 140, and pixel shading 2327 with pixel shader 150. The result of pixel shading 2327 for super tiles is stored in buffer 2304, which completes the graphics pipeline.
FIG. 24 is a flow chart of a graphics pipeline performed on the GPU by yet another embodiment. The flowchart of FIG. 24 shows the binning pipeline 101-3 or 101-4 according to MODE (7) or (8) described in FIG. 23, the first rendering pipeline 102-3 and the second rendering pipeline 102-. It is a flowchart which carries out the graphics pipeline including 4. Therefore, even if the content is omitted below, the content described in FIG. 23 is applied to the flowchart of FIG. 24.
At stage 2401, GPU 10 runs the binning pipeline 101-3 or 101-4 and bins the tile list.
At stage 2402, GPU 10 stores the binned tile list in the first bin stream 2302 (Figure 23).
At stage 2403, GPU 10 utilizes the first bin stream 1902 (Figure 19) for tile X, which is currently the tile, and in the first rendering pipeline 102-3, the tessellation pipeline (Figure 19). Perform 23 hull shading 2312, tessellation 2313 and domain shading 2314).
At stage 2404, GPU 10 delivers the tessellated primitives output from the tessellation pipeline (hull shading 2312, tessellating 2313 and domain shading 2314 in Figure 23) to the tile X, which is currently the tile. Utilize it to carry out the remaining glue pipeline (rasterizing 2316 and pixel shading 2317 in FIG. 23).
At stage 2405, GPU 10 determines if rendering for all tiles is complete. If rendering for all tiles is complete, proceed to stage 2410. However, if rendering for all tiles is not complete, 2403 steps are performed for the next tile in tile X.
At stage 2406, GPU 10 binning 2318 or tiling the tessellated primitives (tessellated vertices) contained in the tile X, which is currently the tile, and the result of binning 2318 is the binning pipeline 101. Mispredicted of the tile positions of the tessellated primitives (tessellated vertices) contained in tile X by comparing with the tile list stored in binstream 2302 by -3 or 101-4. Determine if a mispredicted tile exists. If there are no mispredicted tiles, proceed to stage 2405. However, if there are tiles that are mispredicted, go to stage 2407.
At stage 2407, GPU 10 determines if the mispredicted tile is a rendered tile. If the mispredicted tile is a rendered tile, go to step 2408. However, if the mispredicted tile is not a rendered tile, proceed to stage 2409.
At stage 2408, GPU 10 stores a tile list for mispredicted tiles in the second bin stream 2303 (Figure 23).
At stage 2409, GPU 10 updates the tile list for mispredicted tiles to the first bin stream 2302 (Figure 23).
At stage 2410, GPU 10 determines if there is an erroneously predicted tile list in the second bin stream 2303 (Figure 23). If there is no mispredicted tile list in the second bin stream 2303 (Figure 23), the graphics pipeline ends. However, if there is an erroneously predicted tile list in the second bin stream 2303 (Figure 23), proceed to step 2411.
At stage 2411, GPU 10 performs a second rendering pipeline 102-4 (Figure 23) against a mispredicted tile (super tile) based on the second bin stream 2303 (Figure 23). To do.
FIG. 25 is a block diagram illustrating a detailed hardware configuration of the computing device according to the embodiment.
Referring to FIG. 25, the computing device 1 includes a GPU 10, a CPU 20, a memory 30, a buffer 35, a bus 40, a display unit 2501, an input unit 2503, and a communication unit 2505. In the computing device 1 illustrated in FIG. 25, only the components related to the embodiment are illustrated. Therefore, those skilled in the art will appreciate that other general purpose components may be further included in addition to the components illustrated in FIG. 25. ..
The GPU 10, CPU 20, and memory 30 are capable of performing the operations and functions previously described in the drawings.
Buffer 35 stores tile information output via the tile-based graphics pipeline or tile-based rendering. For example, buffer 35 can store depth test results on tiles or render results on tiles. Even though the buffer 35 is illustrated in FIG. 21 as being provided separately from the GPU 10, CPU 20 or memory 30 in compute device 1, the buffer 35 is GPU 10, CPU 20. Alternatively, it may be provided in the memory 30.
The display unit 2501 is a display interacting means for displaying various information such as information processed by the computing device 1 or information that must be processed to the user. The display unit 2501 can also display a GUI (graphical user interface) for visually and intuitively providing the information processed by the computing device 1 to the user. For example, the display unit 2501 can display graphic data processed by the GPU 10. The display unit 2501 is embodied in various display panels such as LCD (liquid crystal display), LED (light emitting diode), and PDP (plasma display panel).
The input unit 2503 is an input interacting means for inputting information from the user. The input unit 2503 is embodied in a form such as a touch pad, a trackball, a mouse, a keyboard, and a game controller. The display unit 2501 and the input unit 2503 are embodied by integrated touch screen hardware.
The communication unit 2505 includes a mobile communication module for mobile communication, a wired / wireless LAN (local area network) module, a Wi-Fi (wireless fidelity) module for short-range wireless communication, a Bluetooth (registered trademark) module, and NFC (NFC). near field communication) module etc. may be included.
26A and 26B are drawings for explaining the conditions for selecting the type of graphics pipeline processed by the GPU according to one embodiment.
First, in FIG. 7, one of MODE (1) to MODE (8) is selected by user input, or one of MODE (8) is selected depending on the graphic processing environment. According to FIGS. 26A and 26B, GPU 10 is MODEed by the ratio of the size of the object 2615 or 2625 (or the size of the patches that make up the object 2615 or 2625) to the size of one tile 2610 or 2620. Either one of (1) and MODE (8) can be selected. For example, the ratio of the size of the object 2615 or 2625 (or the size of the patches that make up the object 2615 or 2625) to the size of one tile 2610 or 2620 is different in 26A and 26B. Taking advantage of such points, GPU 10 sets a predetermined critical range for each of MODE (1) to MODE (8), and graphics in the efficiency mode corresponding to the range to which the calculated ratio belongs. The pipeline can be controlled to be carried out.
27A and 27B are drawings for explaining the conditions for selecting the type of graphics pipeline processed by the GPU according to other embodiments.
According to FIGS. 27A and 27B, GPU 10 is in MODE (1) to MODE (8) depending on the position of object 2715 or 2725 (or the patches that make up object 2715 or 2725) on tile 2710 or 2720. You can choose any one of them. For example, the distance distance (a) or distance (b) between the boundary of tile 2710 or 2720 and the boundary of object 2715 or 2725 (or the patch that constitutes object 2715 or 2725) is different from each other in FIGS. 27A and 27B. .. Taking advantage of such points, GPU 10 sets a predetermined critical range for each of MODE (1) to MODE (8), and graphics in the efficiency mode corresponding to the range to which the calculated distance belongs. The pipeline can be controlled to be carried out.
FIG. 28 is a drawing for illustrating an example in which a visibility stream stored in a bin stream of memory is applied in a graphics pipeline according to an embodiment.
Referring to FIG. 28, when binning 2811 of the binning pipeline 101 is performed, the bin stream 2802 of memory 30 stores an input-patch visibility stream. Further, when the binning 2811 of the binning pipeline 101 is performed, the output-primitive visibility stream is stored in the bin stream 2802 of the memory 30. Here, binning 2811 corresponds to the binning stage included in the various graphics pipelines described above in the drawings.
The input patch visibility stream is information about the input-patch visibility mask that indicates the visibility of the input patches that are input to perform the hull shading 2821 of the hull shader 121 during the rendering pipeline 102. May include. That is, the input patch visibility mask is also a bit representation of 0 or 1 indicating whether the input patch is visible in tiles. Therefore, by utilizing the input patch visibility stream, the hull shader 121 can perform hull shading 2821 during the rendering pipeline 102 with only visible input patches, thus in the rendering pipeline 102. The amount of calculation is reduced.
Similarly, the output primitive visibility stream is an output-primitive output-primitive that indicates the visibility of the output primitive that is input to perform primitive assembling 2822 during the rendering pipeline 102. Information related to visibility mask) may be included. That is, the output primitive visibility mask is also a bit representation of 0 or 1 that indicates whether the output primitive is visible in tiles. Therefore, by utilizing the output primitive visibility stream, the GPU 10 can perform primitive assembly 2822 with only visible output primitives during the rendering pipeline 102, thus in the rendering pipeline 102. The amount of calculation of is reduced.
FIG. 29 is a drawing for illustrating an example in which a visibility stream stored in a bin stream of memory is applied in a graphics pipeline according to another embodiment.
With reference to FIG. 29, as described in FIGS. 18-21, if binning 2911 of the rendering pipeline 102 is performed on the reference tile (eg, tile A in FIGS. 19 and 21), the memory 30 The bin stream 2902 stores a vertex visibility stream. Also, when binning 2811 of the rendering pipeline 102 is performed, the domain visibility stream is stored in the bin stream 2902 of the memory 30. Here, binning 2911 corresponds not only to FIGS. 19 and 21, but also to binning stages included in various graphics pipelines described above in the drawings.
The vertex visibility stream is between adjacent tiles (eg, tile B, tile C or tile D in FIGS. 19 and 21) adjacent to the reference tile (eg, tile A in FIGS. 19 and 21) and the rendering pipeline 102. , Vertex shader 115 may contain information relating to a vertex visibility mask that indicates the visibility of the vertex entered for performing the vertex shading 2921. That is, the vertex visibility mask is tiled by the vertex. It is also a bit representation of 0 or 1 indicating whether or not it is visible in. Therefore, by utilizing the Vertex Visibility Stream, the Vertex Shader 115 can only see the Visible Vertex during the Rendering Pipeline 102. Vertex shading 2921 can be done, which reduces the amount of computation in the rendering pipeline 102.
Similarly, the domain visibility stream goes into the domain visibility mask, which indicates the visibility of the output patch, that is input to perform domain shading 2922 in domain shader 125 during the rendering pipeline 102. Information related to the information may be included. That is, the domain visibility mask is also a bit representation of 0 or 1 that indicates whether the output primitive is visible in tiles. Therefore, by utilizing the domain visibility stream, the domain shader 125 can perform domain shading 2922 during the rendering pipeline 102 with only visible output patches, thus in the rendering pipeline 102. The amount of calculation is reduced.
On the other hand, the visibility streams described herein may include, but are limited to, input patch visibility streams, output primitive visibility streams, vertex visibility masks or domain visibility streams as described above. It's not a thing.
FIG. 30 is a drawing for illustrating a visibility stream in which a binning pipeline is completed and stored in a bin stream, according to one embodiment.
As mentioned earlier, GPU 10 can store the visibility stream in memory 30 when the binning pipeline 101 is complete. With reference to FIG. 30, the visibility stream may include an input visibility stream and an output visibility stream.
The input visibility stream may contain strings 1 and 0 for each patch. Each bit means that at least part of the patch is visible in the final frame. For example, bit 1 for patch 2 means that patch 2 is visible in the final frame, and other patches with bit 0 are invisible in the final scene. The output visibility stream contains streams 1 and 0 for each primitive, but 1 bit indicates that the primitive contributes to the pixels visible in the final scene (eg,). Bit 1) for primitive 0, bit 0 indicates that the primitive does not contribute to the pixels visible in the final scene (eg bit 0 for primitive 6). The output visibility stream is generated on a patch-by-patch basis. That is, there is one output visibility stream for each patch for each tile. Alternatively, each tile can have one output visibility stream that concatenates the output primitives generated from the input primitives together.
FIG. 31 is a drawing for illustrating a visibility stream in which the binning pipeline is completed and stored in the bin stream by another embodiment.
Referring to FIG. 31, the output visibility stream 3110 is generated for the output patch output from the hull shader 121, and the output visibility stream 3120 is for the tessellated primitive output from the domain shader 125. It will also be generated. However, it is not limited to that.
FIG. 32 is a flow chart of a method of performing a graphics pipeline in a computing device according to an embodiment. The method of executing the graphics pipeline of the computing device 1 illustrated in FIG. 32 relates to the embodiment (MODE (1)) described with reference to FIGS. 10 and 11 described above. Therefore, even if the content is omitted below, the content described in FIGS. 10 and 11 and the like also applies to the method of executing the graphics pipeline of FIG. 32.
At stage 3201, the GPU 10 of compute device 1 determines and decides whether to skip the tessellation for the output patch based on the number of tiles containing the output patch output from the hull shader 121. Depending on the result, the binning pipeline 101-1 binning the tile list for the output patch or tessellated primitive is performed.
At stage 3202, GPU 10 of compute device 1 performs rendering pipeline 102-1 on a tile-by-tile basis, based on a binned tile list.
More specifically, the 3201 step performing the binning pipeline 101-1 skips the tessellation for the output patch performed by the tessellator 123 if the number of tiles containing the output patch is one. be able to. The 3201 stage of performing the binning pipeline 101-1 generates an output patch by hull shading the input patch with the hull shader 121, binning the tile list related to the output patch, and the output patch is included in one tile. It may include a step of determining whether or not. At that time, the 3202 stage that carries out the rendering pipeline 102-1 is rasterized using the tile list binned to the output patch if it is determined that the output patch is contained in one tile. It can be performed. Here, rasterizing corresponds to a part of the stages performed in the rendering pipeline 102-1, and the rendering pipeline 102-1 includes a pixel shading stage, etc. in addition to the rasterizing stage. Various stages may be included. The 3202 stage that carries out the rendering pipeline 102-1 is the binning pipeline 101-1, which is the bin stream stored for the output patch in the binning pipeline 101-1 if tessellation is skipped. May include the steps of carrying out the tessellation pipeline. On the other hand, in the 3201 stage of performing the binning pipeline 101-1, the tessellation is programmed so that the boundaries formed by the output patch include the boundaries formed by the tessellated primitives.
In contrast, the 3201 stage performing the binning pipeline 101-1 determines that the output patch is contained in more than one tile (or that the output patch is not contained in one tile). If so, the tessellated primitives can be generated by tessellating the tessellator 123 for the output patch and domain shading the domain shader 125. At that time, the 3202 stage performing the rendering pipeline 102-1 can perform rasterizing by utilizing the tile list binned to the tessellated primitive.
On the other hand, the memory 30 of the computing device 1 can store the tile list generated by the binning pipeline 101-1 and provide the saved tile list to the rendering pipeline 102-1. The 3201 step of performing the binning pipeline 101-1 stores the visibility stream related to the output patch in memory 30 when the output patch is included in one tile, and is included in the tile with two or more output patches. If so, it may include a step of storing the visibility stream associated with the tessellated primitive in memory 30.
FIG. 33 is a flow chart of how to perform a graphics pipeline in a computing device according to another embodiment. The method of executing the graphics pipeline of the computing device 1 illustrated in FIG. 33 relates to the embodiment (MODE (2)) described with reference to FIGS. 12 and 13 described above. Therefore, even if the content is omitted below, the content described in FIGS. 12 and 13 and the like also applies to the method of executing the graphics pipeline of FIG. 33.
At stage 3301, GPU 10 of compute device 1 is based on the number of tiles containing primitives tessellated with a second tessellation factor that is different from the first tessellation factor determined by Halshader 121. It is decided whether to skip the tessellation based on the tessellation factor, and depending on the judgment result, the tile list related to the primitive tessellated by the first tessellation factor or the output patch output from the hull shader 121. Perform the binning pipeline 101-2.
At stage 3302, GPU 10 of compute device 1 performs rendering pipeline 102-1 on a tile-by-tile basis, based on a binned tile list.
More specifically, the 3301 step of performing the binning pipeline 101-2 is performed by the tessellator 123 if the number of tiles containing the primitive tessellated by the second tessellation factor is one. Skip tessellation based on the first tessellation factor to be done. Here, the second tessellation factor is lower than the first tessellation factor. The 3301 step that carries out the binning pipeline 101-2 is the hull shading step that generates the output patch with the hull shader 121 and determines the first tessellation factor, the second tessellation factor that is lower than the first tessellation factor. Based on, tessellating the tessellator for the output patch, and domain shading the domain shader to generate a tessellated primitive with a second tessellation factor, and tessellating with a second tessellation factor. It may include a step to determine whether the primitive is included in one tile. At that time, the 3302 stage that carries out the rendering pipeline 102-1 utilizes the tile list binned to the output patch if one tile contains a primitive tessellated by the second tessellation factor. It is possible to perform rasterizing. Here, rasterizing corresponds to a part of the stages performed in the rendering pipeline 102-1, and the rendering pipeline 102-1 includes a pixel shading stage, etc. in addition to the rasterizing stage. Various stages may be included. On the other hand, in the 3301 stage of carrying out the binning pipeline 101-2, the tessellation is such that the boundary formed by the tessellated primitive in the first tessellation factor becomes the tessellated primitive in the second tessellation factor.
In contrast, the 3301 step of performing the binning pipeline 101-2 is when it is determined (or second) that a primitive tessellated by the second tessellation factor is contained in two or more tiles. Tessellator 123 tessellating for output patches, and domain shader 125 domain shading based on the first tessellation factor (if it is determined that the tessellated primitive is not included in one tile). By doing so, it is possible to generate a primitive that is tessellated by the first tessellation factor. At that time, the 3302 stage that carries out the rendering pipeline 102-1 can perform rasterizing and pixel shading using the tile list binned to the primitive tessellated by the first tessellation factor. it can.
On the other hand, the memory 30 of the computing device 1 can store the tile list generated in the binning pipeline 101-2 and provide the saved tile list to the rendering pipeline 102-1. The 3301 stage, which carries out the binning pipeline 101-2, stores the visibility stream for the output patch in memory 30 when one tile contains a primitive tessellated by the second tessellation factor. If two or more tiles contain a primitive tessellated with two tessellation factors, it may include a step of storing the visibility stream for the primitive tessellated with the first tessellation factor in memory 30.
FIG. 34 is a flow chart of how to perform a graphics pipeline in a computing device according to yet another embodiment. The method of executing the graphics pipeline of the computing device 1 illustrated in FIG. 34 relates to the embodiment (MODE (5)) described with reference to FIGS. 18 and 19 described above. Therefore, even if the content is omitted below, the content described in FIGS. 18 and 19 and the like also applies to the method of executing the graphics pipeline of FIG. 34.
At stage 3401, GPU 10 of compute device 1 determines whether the output patch is included in multiple tiles by binning the output patch output from the hull shader 121, and multiple output patches. If included in a tile, perform binning pipeline 101-3, which schedules the tile's rendering order.
At stage 3402, GPU 10 of compute device 1 performs rendering pipeline 102-2 for tiles on a tile-by-tile basis, based on a scheduled rendering order.
More specifically, the 3401 step performing the binning pipeline 101-3 can skip the tessellation for the output patch performed by the tessellator 123. The 3401 stage of performing the binning pipeline 101-3 generates an output patch by hull shading the input patch with the hull shader 121, binning the tile list related to the output patch, and the output patch is contained in multiple tiles. If the output patch is included in multiple tiles, it may include the step of determining the first tile (reference tile, eg tile A in FIG. 19) corresponding to the first rendering order. ..
Stage 3402, which carries out the rendering pipeline 102-2, carries out the first rendering pipeline for the first tile and the second rendering for adjacent tiles (eg tile B, tile C or tile D in Figure 19). It may include steps to carry out the pipeline. The second rendering pipeline is based on the visibility stream generated by the first rendering pipeline for at least one of the visible vertices, visible primitives, and visible patches in adjacent tiles. And render. On the other hand, the first rendering pipeline and the second rendering pipeline described in FIG. 34 are a part of the rendering pipeline 102-2, and the first rendering pipeline 102-3 and the second rendering pipeline in FIG. 7 Different from rendering pipeline 102-4.
On the other hand, the memory 30 of the computing device 1 stores the visibility stream generated by the rendering pipeline 102-2 for the first tile, and the saved visibility stream is stored in the rendering pipeline 102- for the adjacent tile. Can be provided in 2. That is, the 3401 step of performing the rendering pipeline 102-2 may include storing the visibility stream generated by the rendering pipeline 102-2 for the first tile in memory 30.
FIG. 35 is a flow chart of how to perform a graphics pipeline in a computing device according to yet another embodiment. The method of executing the graphics pipeline of the computing device 1 illustrated in FIG. 35 relates to the embodiment (MODE (6)) described with reference to FIGS. 20 and 21 described above. Therefore, even if the content is omitted below, the content described in FIGS. 20 and 21 and the like also applies to the method of executing the graphics pipeline of FIG. 35.
At stage 3501, GPU 10 of compute device 1 first by binning a primitive tessellated with a second tessellation factor (TF) that is different from the first tessellation factor (TF) determined by the hull shader 121. Determines whether a tessellated primitive with a 2 tessellation factor (TF) is included in multiple tiles, and a tessellated primitive with a 2 tessellation factor (TF) is included in multiple tiles. If so, perform binning pipeline 101-4, which schedules the rendering order of multiple tiles.
At stage 3502, GPU 10 of compute device 1 performs rendering pipeline 102-2 for tiles on a tile-by-tile basis, based on a scheduled rendering order.
More specifically, the 3501 step performing the binning pipeline 101-4 can skip the tessellation based on the first tessellation factor performed by the tessellator 123. Here, the second tessellation factor has a lower value than the first tessellation factor. The 3501 stage of performing the binning pipeline 101-4 is lower than the first tessellation factor (TF), which is the stage of hull shading in which the hull shader 121 generates an output patch and determines the first tessellation factor (TF). Generates a tessellated primitive with a second tessellation factor (TF) by performing tessellation of tessellator 123 and domain shading of domain shader 125 for output patches based on the second tessellation factor (TF). Stage, the stage of binning the tile list for the primitive tessellated by the 2nd tessellation factor (TF), whether multiple tiles contain the primitive tessellated by the 2nd tessellation factor (TF) The first tile (reference tile, eg, the tile in Figure 21) that corresponds to the first rendering order when multiple tiles contain primitives tessellated by the second tessellation factor (TF) and at the stage of determining that. A) may include a step to determine.
Stage 3502, which carries out the rendering pipeline 102-2, carries out the first rendering pipeline for the first tile and the second rendering for adjacent tiles (eg tile B, tile C or tile D in Figure 21). It may include steps to carry out the pipeline. The second rendering pipeline is based on the visibility stream generated by the first rendering pipeline for at least one of the visible vertices, visible primitives, and visible patches in adjacent tiles. And render. On the other hand, the first rendering pipeline and the second rendering pipeline described in FIG. 35 are a part of the rendering pipeline 102-2, and the first rendering pipeline 102-3 and the second rendering pipeline in FIG. 7 are shown. 2 Different from Rendering Pipeline 102-4.
On the other hand, the memory 30 of the computing device 1 stores the visibility stream generated by the rendering pipeline 102-2 for the first tile, and the saved visibility stream is stored in the rendering pipeline 102- for the adjacent tile. Can be provided in 2. That is, the 3501 step of performing the rendering pipeline 102-2 may include storing the visibility stream generated by the rendering pipeline 102-2 for the first tile in memory 30.
On the other hand, the above-described embodiment of the present invention can be created by a program executed by a computer, and may be embodied by a general-purpose digital computer that operates the program by using a computer-readable recording medium. .. In addition, the data structure used in the above-described embodiment of the present invention is recorded on a computer-readable recording medium via many means. The computer-readable recording medium is a magnetic recording medium (eg, ROM (read only memory), floppy (registered trademark) disk, optical disk, etc.); an optically readable medium (eg, CD (compact disc) -ROM, etc.). Includes recording media such as DVDs (digital versatile discs).
The present invention has been described above, focusing on its preferred embodiments. Those skilled in the art to which the present invention belongs will appreciate that the present invention is embodied in a modified form to the extent that it does not deviate from the essential properties of the present invention. Therefore, the disclosed embodiments must be considered from a descriptive point of view, not from a limiting point of view. The scope of the present invention is shown in the claims, not in the above description, and all modifications within the equivalent scope must be construed as being included in the present invention. is there.
The graphic processing apparatus of the present invention and the method of carrying out a tile-based graphics pipeline with the graphic processing apparatus are effectively applicable to, for example, a technical field related to image processing.
1 Computing device 10 GPU20 CPU30 Memory 35,180 Buffer 40 Bus 100 Graphics pipeline 101 Binning pipeline 102 Rendering pipeline 109 General graphics pipeline 110 Input assembler 115 Vertex shader 121 Hull shader 123 Tessellator 125 Domain shader 130 Geometry Shader 135 Vina 140 Rasterizer 150 Pixel Shader 160 Output Marger 170 Controller 210,810,901,902,2610,2620,2710,2720 Tile 220 Automotive Object 300 Tessellation Pipeline 410,2100 Patch 415 Control Point 420 Boundary 425 Primitive 500 Table 815 Three-Dimensional Object 820 4 tiles 1900,2213 Output patch 2225 Tessellated Primitive 2230 Falsely Predicted Primitive 2501 Display 2503 Input 2505 Communication 2615,2625,2715,2725 Object 2802,2902 Bin Stream 3110,3120 Output Visibility Stream
38 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12 Sheet 13 Sheet 14 Sheet 15 Sheet 16 Sheet 17 Sheet 18 Sheet 19 Sheet 20 Sheet 21 Sheet 22 Sheet 23 Sheet 24 Sheet 25 Sheet 26 Sheet 27 Sheet 28 Sheet 29 Sheet 30 Sheet 31 Sheet 32 Sheet 33 Sheet 34 Sheet 35 Sheet 36 Sheet 37 Sheet 38
Every citation, both ways
| Document | Relation | Office |
|---|---|---|
| US20130120380A1 | Cites | United States of America |
12 members in 5 offices
Priority claims5
| Document | Office | Kind | Date |
|---|---|---|---|
| 1020140166628 | Republic of Korea | – | |
| 20140166628 | Republic of Korea | A | |
| 20140166628 | Republic of Korea | A | |
| 1020140166628 | – | – | – |
| KR20140166628 | – | – | – |
Members12
| Document | Office | Kind | |
|---|---|---|---|
| US2016148424A1 | United States of America | A1 | |
| JP2016100012A | Japan | A | |
| EP3026635A2 | European Patent Office (EPO) | A2 | |
| KR20160063079A | Republic of Korea | A | |
| CN105654553A | China | A | |
| EP3026635A3 | European Patent Office (EPO) | A3 | |
| US9870639B2 | United States of America | B2 | |
| EP3026635B1 | European Patent Office (EPO) | B1 | |
| JP6709038B2This record | Japan | B2 | |
| CN105654553B | China | B | |
| KR102327144B1 | Republic of Korea | B1 | |
| KR102327144B1 | Republic of Korea | B1 |
11 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Cancellation because of no payment of annual feesLAPS | LAPS | |
| Receipt of annual feesJAPANESE INTERMEDIATE CODE: R250R250 | R250 | |
| Receipt of annual feesJAPANESE INTERMEDIATE CODE: R250R250 | R250 | |
| First payment of annual fees (during grant procedure)JAPANESE INTERMEDIATE CODE: A61A61 | A61 | |
| Certificate of patent or registration of utility modelJAPANESE INTERMEDIATE CODE: R150R150 | R150 | |
| Written decision to grant a patent or to grant a registration (utility model)JAPANESE INTERMEDIATE CODE: A01A01 | A01 | |
| Decision of grant or rejection writtenTRDD | TRDD | |
| Request for written amendment filedJAPANESE INTERMEDIATE CODE: A523A521 | A521 | |
| Notification of reasons for refusalJAPANESE INTERMEDIATE CODE: A131A131 | A131 | |
| Report on retrievalJAPANESE INTERMEDIATE CODE: A971007A977 | A977 | |
| Written request for application examinationJAPANESE INTERMEDIATE CODE: A621A621 | A621 |
Numbers
- Publication
- 6709038
- Publication, DOCDB
- 6709038
- Publication, EPODOC
- JP6709038B
- Application
- 222962
- Application, DOCDB
- 2015222962
- Application, EPODOC
- JP20150222962
Titles2
- Japanese
- グラフィックス・パイプラインを遂行する方法及びコンピューティング装置
- English
- How to carry out the graphics pipeline and computing equipment
Classification
- CPC, 4
- G06T15/005
- G06T1/20
- G06T11/40
- Y02D10/00
- IPC, 2
- G06T15 00
- G06T1 20
