Hirdetés

Új hozzászólás Aktív témák

  • stratova

    veterán

    válasz gbors #32687 üzenetére

    Én meg a write only mód... Sorry. Szóval, jogos:
    Bei den Polygonen fällt im Vergleich zur Fiji-GPU der Fury X ebenfalls auf, dass nur der komplett verworfene Triangle-Strip-Test wesentlich flotter läuft - doch das tat er schon mit Polaris.

    Annyiból van áthallás a két link között, hogy összességében a geometriai teljesítmény, mint szűk keresztmetszet akkor is csökken, ha eleve figyelmen kívül hagyhat egy jelentős mennyiségű háromszöget (primitive discard) de azáltal is, ha nő a geometriai motor teljesítménye.

    Polaris:

    Primitive discard
    Polaris-based GPUs have 1-4 geometry engines, depending on overall performance targets (e.g. the Radeon™ RX 460 GPU has two, while the Radeon™ RX 480 GPU has four). The screen space is partitioned to load balance between the geometry engines, which can each rasterize a triangle per clock. The Polaris geometry engines use a new filtering algorithm to more efficiently discard primitives. As figure 5 illustrates, it is common that small or very thin triangles do not intersect any pixels on the screen and therefore cannot influence the rendered scene. The new geometry engines will detect such triangles and automatically discard them prior to rasterization, which saves energy by reducing wasted work and freeing up the geometry engines to rasterize triangles which will impact the scene. The new filtering algorithm can improve performance by up to 3.5X (fig. 6), and the benefits are more pronounced in scenes with many polygons.

    Triangle strip
    The Polaris geometry engines are also more flexible than in previous generations. Triangles are commonly organized into lists and strips. A list of N triangles is simply a set of 3N vertices where each set of three vertices represents a triangle. A strip of triangles is a more compact data structure that takes advantage of locality to reduce the number of vertices needed. In a triangle strip, the first triangle takes 3 vertices, and each additional triangle shares two vertices and only needs a single additional vertex – so a strip of N triangles has N+2 vertices. The Polaris geometry engine can handle both lists and strips at full rate, which avoids the overhead of converting triangle strips to lists in software.

    Vegánál még/már elérhető (6-8), azt nem tördelem be, csak kiragadok belőle pár részletet:

    The “Vega” 10 GPU includes four geometry engines which would normally be limited to a maximum throughput of four primitives per clock, but this limit increases to more than 17 primitives per clock when primitive shaders are employed.⁷
    Primitive shaders can operate on a variety of different geometric primitives, including individual vertices, polygons, and patch surfaces. When tessellation is enabled, a surface shader is generated to process patches and control points before the surface is tessellated, and the resulting polygons are sent to the primitive shader. In this case, the surface shader combines the vertex shading and hull shading stages of the Direct3D graphics pipeline, while the primitive shader replaces the domain shading and geometry shading stages.
    ...
    Primitive shaders will coexist with the standard hardware geometry pipeline rather than replacing it. In keeping with “Vega’s” new cache hierarchy, the geometry engine can now use the on-chip L2 cache to store vertex parameter data. This arrangement complements the dedicated parameter cache, which has doubled in size relative to the prior-generation “Polaris” architecture. This caching setup makes the system highly tunable and allows the graphics driver to choose the optimal path for any use case. Combined with high-speed HBM2 memory, these improvements help to reduce the potential for memory bandwidth to act as a bottleneck for geometry throughput.

    [ Szerkesztve ]

Új hozzászólás Aktív témák