Эквивалент растеризации, независимой от цели (TIR) ​​Direct3D 11.1 в OpenGL (включая расширения)

Целенезависимая растеризация (TIR) ​​— это новая аппаратная функция в DirectX 11.1, которую Microsoft используется для улучшения Direct2D в Windows 8. AMD заявила, что TIR улучшила производительность в 2D-векторе. графики примерно на 500%. И была некоторая словесная война с Nvidia, потому что По-видимому, графические процессоры Kepler не поддерживают TIR (среди других функций DirectX 11.1). Идея МДП, по-видимому, возникла в Microsoft, поскольку у них есть патентная заявка на нее.

Теперь с Direct2D все в порядке, ваша ОС — Windows, но есть ли какое-то расширение OpenGL (возможно, от производителя/AMD), которое обеспечивает доступ к тому же оборудованию/драйверу TIR? Я думаю, что AMD находится в немного странном положении, потому что для OpenGL нет независимого от поставщика расширения 2D-векторной графики; только Nvidia сейчас продвигает NV_path_rendering, и ее архитектура отличается от Direct2D. Поэтому неясно, где что-либо, созданное AMD для ускорения 2D-векторной графики, может подключаться (или отображаться) в OpenGL, в отличие от мира Direct2D+Direct3D. Я надеюсь, что мой пессимизм развеется простым ответом ниже.

На самом деле я публикую здесь своего рода обновление, потому что для этого недостаточно места в сообщениях в стиле комментариев. Кажется, есть небольшая путаница в отношении того, что делает TIR, а не просто фреймбуфер без подключенного хранилища. Это может быть связано с тем, что выше я привел ссылку только на в основном ужасный патентный документ (который, однако, является самым подробным документом, который я мог найти на МДП). Лучший общий обзор TIR, который я нашел, — это следующий фрагмент из запись в блоге Синофски:

для повышения производительности при рендеринге неправильной геометрии (например, географических границ на карте) мы используем новую функцию графического оборудования под названием Target Independent Rasterization или TIR.

TIR позволяет Direct2D тратить меньше циклов ЦП на тесселяцию, поэтому он может быстрее и эффективнее отдавать графическому процессору инструкции по рисованию без ущерба для визуального качества. TIR доступен в новом аппаратном обеспечении графического процессора, разработанном для Windows 8 и поддерживающем DirectX 11.1.

Ниже приведена диаграмма, показывающая повышение производительности рендеринга сглаженной геометрии из различных файлов SVG на графическом процессоре DirectX 11.1 с поддержкой TIR: [диаграмма вырезана]

Мы тесно сотрудничали с нашими партнерами по графическому оборудованию [читай AMD] для разработки TIR. Значительные улучшения стали возможными благодаря этому партнерству. Аппаратное обеспечение DirectX 11.1 уже сегодня представлено на рынке, и мы работаем с нашими партнерами, чтобы обеспечить широкое распространение большего количества продуктов с поддержкой TIR.

Это аппаратное обеспечение, которое я прошу использовать из OpenGL. (Черт возьми, я бы согласился даже на вызов его из Mantle, потому что его также можно будет использовать вне Windows.)


person Fizz    schedule 09.08.2014    source источник


Ответы (3)


Эквивалентом OpenGL для TIR является EXT_raster_multisample.

Это упоминается на странице новых функций архитектуры Nvidia Maxwell: https://developer.nvidia.com/content/maxwell-gm204-opengl-extensions.

person Nikita Nemkin    schedule 13.12.2020
comment
Итак, я полагаю, что Nvidia была права в том, что для TIR на их стороне требовалось оборудование более новое, чем у Kepler... - person Fizz; 13.12.2020
comment
Я не читал технических деталей, но одну новость в расширениях Maxwell OpenGL действительно утверждается. Обратите внимание, что EXT_raster_multisample эквивалентно независимой от цели растеризации в Direct3D 11.1, которая позволяет использовать несколько образцов растра с одним образцом цвета, если отключены тесты глубины и трафарета, и на самом деле это подмножество NV_framebuffer_mixed_samples, которое является более общим и обеспечивает большую гибкость. - person Fizz; 13.12.2020
comment
Кстати, вот краткое объяснение того, как Direct2D использует TIR для рендеринга сглаженных путей: microsoft.github.io/DirectX-Specs/d3d/archive/ - person Nikita Nemkin; 13.12.2020

Я считаю, что TIR - это просто перепрофилирование функции, которую nvidia и AMD используют для сглаживания.

Nvidia называет это сглаживанием образца покрытия, а их gl-расширение — GL_NV_framebuffer_multisample_coverage.

AMD называет это EQAA, но, похоже, у них нет расширения gl.

person CynicismRising    schedule 12.08.2014
comment
Возможно, но повторное использование, вероятно, не объясняет этого полностью. CSAA реализован даже в старых картах GeForce 8800, тогда как Nvidia заявила (см. Вопрос по ссылке), что даже Kepler не может реализовать TIR, потому что для этого требуется новое оборудование. - person Fizz; 12.08.2014
comment
Отсюда описание MS программный уровень может оценивать большое количество позиций выборки субпикселей для покрытия, но выделять память только для меньшего количества выборок ... - person CynicismRising; 12.08.2014
comment
Я читал, что TIR — это возможность запустить растеризатор с разрешением выше, чем буфер хранения, а затем передать маску покрытия каждому пикселю, чтобы шейдер мог решить, как поступить с частичным покрытием. Вполне вероятно, что ранее у hw была возможность сделать это для небольшого набора фиксированных дополнительных разрешений, но TIR расширил возможные разрешения за пределы своих возможностей. - person CynicismRising; 12.08.2014

Просто чтобы немного расширить ответ Никиты, есть более подробная страница расширения Nvidia (2017), которая говорит:


(6) How do EXT_raster_multisample and NV_framebuffer_mixed_samples
    interact? Why are there two extensions?

    RESOLVED: The functionality in EXT_raster_multisample is equivalent to
    "Target-Independent Rasterization" in Direct3D 11.1, and is expected to be
    supportable today by other hardware vendors. It allows using multiple
    raster samples with a single color sample, as long as depth and stencil
    tests are disabled, with the number of raster samples controlled by a
    piece of state.

    NV_framebuffer_mixed_samples is an extension/enhancement of this feature
    with a few key improvements:

     - Multiple color samples are allowed, with the requirement that the number
       of raster samples must be a multiple of the number of color samples.

     - Depth and stencil buffers and tests are supported, with the requirement
       that the number of raster/depth/stencil samples must all be equal for
       any of the three that are in use.

     - The addition of the coverage modulation feature, which allows the
       multisample coverage information to accomplish blended antialiasing.

    Using mixed samples does not require enabling RASTER_MULTISAMPLE_EXT; the
    number of raster samples can be inferred from the depth/stencil
    attachments. But if it is enabled, RASTER_SAMPLES_EXT must equal the
    number of depth/stencil samples.
person Fizz    schedule 13.12.2020