Jump to content

Tiled rendering: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
m Unlinked: Tiling
Line 40: Line 40:
Due to the relatively low external memory bandwidth, and the modest amount of on-chip memory required, tiled rendering is a popular technology for embedded GPUs. Current examples include:
Due to the relatively low external memory bandwidth, and the modest amount of on-chip memory required, tiled rendering is a popular technology for embedded GPUs. Current examples include:


Tile-based immediate mode rendering (TBIM):
* [[ARM Holdings|ARM]] [[Mali (GPU)|Mali]] series.
* [[ARM Holdings|ARM]] [[Mali (GPU)|Mali]] series.<ref>{{cite web | url=http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0363d/CJAEEJCF.html | title=Mali rendering strategy | publisher=ARM | date=2015-4-8 }}</ref>
* [[Imagination Technologies]] [[PowerVR]] series.
* [[Qualcomm]] [[Adreno]] (series 400 also supports immediate mode rendering).<ref>{{cite web | url=https://lwn.net/Articles/638908/ | title=An update on the freedreno graphics driver | publisher=lwn.net }}</ref>
* [[Qualcomm]] [[Adreno]] series.
Tile-based deferred rendering (TBDR):
* [[Imagination Technologies]] [[PowerVR]] 5/6/7 series.<ref>{{cite web | url=http://blog.imgtec.com/powervr/a-look-at-the-powervr-graphics-architecture-tile-based-rendering | title=A look at the PowerVR graphics architecture: Tile-based rendering | publisher=Imagination Technologies | date=2015-4-2}}</ref>
* [[Broadcom]] [[VideoCore|VideoCore IV]] series.<ref>{{cite web | url=http://www.broadcom.com/docs/support/videocore/VideoCoreIV-AG100-R.pdf | title=VideoCoreIV-AG100 | publisher=Broadcom | date=2013-09-18}}</ref>
* [[Broadcom]] [[VideoCore|VideoCore IV]] series.<ref>{{cite web | url=http://www.broadcom.com/docs/support/videocore/VideoCoreIV-AG100-R.pdf | title=VideoCoreIV-AG100 | publisher=Broadcom | date=2013-09-18}}</ref>



Revision as of 14:12, 15 September 2015

Tiled rendering is the process of subdividing (or tiling) a computer graphics image by a regular grid in image space to exploit local spatial coherence in the scene and/or to facilitate the use of limited hardware rendering resources later in the graphics pipeline.

Tiled rendering is sometimes known as a "sort middle" architecture.[1]

In a typical tiled renderer, geometry must first be transformed into screen space and assigned to screen-space tiles. This requires some storage for the lists of geometry for each tile. In early tiled systems, this was performed by the CPU, but all modern hardware contains hardware to accelerate this step. The list of geometry can also be sorted front to back, allowing the GPU to use hidden surface removal to avoid processing pixels that are hidden behind others, saving on memory bandwidth for unnecessary texture lookups.[2]

Once geometry is assigned to tiles, the GPU renders each tile separately to a small on-chip buffer of memory. This has the advantage that composition operations are cheap, both in terms of time and power. Once rendering is complete for a particular tile, the final pixel values for the whole tile are then written once to external memory. Also, since tiles can be rendered independently, the pixel processing lends itself very easily to parallel architectures with multiple tile rendering engines.

Tiles are typically small (16×16 and 32×32 pixels are popular tile sizes), although some architectures use much larger on-chip buffers and can be said to straddle the divide between tiled rendering and immediate mode ("sort last") rendering.

Tiled rendering should not be confused with tiled/nonlinear framebuffer addressing schemes, which make adjacent pixels also adjacent in memory.[3] These addressing schemes are used by a wide variety of architectures, not just tiled renderers.

Early work

Much of the early work on tiled rendering was done as part of the Pixel Planes 5 architecture (1989).[4][5]

The Pixel Planes 5 project validated the tiled approach and invented a lot of the techniques now viewed as standard for tiled renderers. It is the work most widely cited by other papers in the field.

The tiled approach was also known early in the history of software rendering. Implementations of Reyes rendering often divide the image into "tile buckets".

Tiles were also used for 3D rendering in early 3D arcade system boards such as the Namco System 21 in 1988,[6] and the Sega Model 1[7] and Namco System 22[8] in 1992.

Commercial products – Desktop and Console

Early in the development of desktop GPUs, several companies developed tiled architectures. Over time, these were largely supplanted by immediate-mode GPUs with fast custom external memory systems.

Major examples of this are:

Examples of non-tiled architectures that use large on-chip buffers are:

  • Xbox 360 (2005): the GPU contains an embedded 10 MiB eDRAM; this is not sufficient to hold the raster for an entire 1280×720 image with 4× multisample anti-aliasing, so a tiling solution is superimposed when running in HD resolutions and 4× MSAA is enabled.[11]
  • Xbox One (2013): the GPU contains an embedded 32 MiB eSRAM, which can be used to hold all or part of an image. It is not a tiled architecture, but is flexible enough that software developers can emulate tiled rendering.[12]

Commercial products – Embedded

Due to the relatively low external memory bandwidth, and the modest amount of on-chip memory required, tiled rendering is a popular technology for embedded GPUs. Current examples include:

Tile-based immediate mode rendering (TBIM):

Tile-based deferred rendering (TBDR):

Vivante produces mobile GPUs which have tightly coupled frame buffer memory (similar to the Xbox 360 GPU described above). Although this can be used to render parts of the screen, the large size of the rendered regions means that they are not usually described as using a tile-based architecture.

See also

References

  1. ^ Molnar, Steven (1994-04-01). "A Sorting Classification of Parallel Rendering" (PDF). IEEE. Retrieved 2012-08-24.
  2. ^ "PowerVR: A Master Class in Graphics Technology and Optimization" (PDF). Imagination Technologies. 2012-01-14. Retrieved 2014-01-11.
  3. ^ Deucher, Alex (2008-05-16). "How Video Cards Work". X.Org Foundation. Retrieved 2010-05-27.
  4. ^ Mahaney, Jim (1998-06-22). "History". Pixel-Planes. University of North Carolina at Chapel Hill. Retrieved 2008-08-04.
  5. ^ Fuchs, Henry (1989-07-01). "Pixel-planes 5: a heterogeneous multiprocessor graphics system using processor-enhanced memories". Pixel-Planes. ACM. Retrieved 2012-08-24.
  6. ^ http://mamedev.org/source/src/mame/drivers/namcos21.c.html
  7. ^ http://mamedev.org/source/src/mame/drivers/model1.c.html
  8. ^ http://www.system16.com/hardware.php?id=537
  9. ^ Smith, Tony (1999-10-06). "GigaPixel takes on 3dfx, S3, Nvidia with... tiles". Gigapixel. The Register. Retrieved 2012-08-24.
  10. ^ mestour, mestour (2011-07-21). "Develop 2011: PS Vita is the most developer friendly hardware Sony has ever made". PS Vita. 3dsforums. Retrieved 2011-07-21.
  11. ^ http://msdn.microsoft.com/en-us/library/bb464139.aspx
  12. ^ http://www.neowin.net/news/xbox-one-developer-upcoming-sdk-improvements-will-allow-for-more-1080p-games
  13. ^ "Mali rendering strategy". ARM. 2015-4-8. {{cite web}}: Check date values in: |date= (help)
  14. ^ "An update on the freedreno graphics driver". lwn.net.
  15. ^ "A look at the PowerVR graphics architecture: Tile-based rendering". Imagination Technologies. 2015-4-2. {{cite web}}: Check date values in: |date= (help)
  16. ^ "VideoCoreIV-AG100" (PDF). Broadcom. 2013-09-18.