Поделиться через


перечисление D3D12DDI_VIDEO_DECODE_TIER_0020 (d3d12umddi.h)

Указывает уровень декодирования видео. Декодирование уровней видео определяет набор аппаратных возможностей. Чем выше уровень, тем более способно оборудование.

Синтаксис

typedef enum D3D12DDI_VIDEO_DECODE_TIER_0020 {
  D3D12DDI_VIDEO_DECODE_TIER_0020_NOT_SUPPORTED,
  D3D12DDI_VIDEO_DECODE_TIER_0020_1,
  D3D12DDI_VIDEO_DECODE_TIER_0020_2,
  D3D12DDI_VIDEO_DECODE_TIER_0020_3
} ;

Константы

 
D3D12DDI_VIDEO_DECODE_TIER_0020_NOT_SUPPORTED
Профиль декодирования не поддерживается.
D3D12DDI_VIDEO_DECODE_TIER_0020_1
Декодирование видео уровня 1. При декодировании видео уровня 1 оборудование требует декодирования выходных текстур и ссылочных текстур для декодирования потока, чтобы они были физически непрерывными, когда операции с видео ссылаться на них.

Эталонные ресурсы выделяются приложением в виде массива текстур D3D12. Драйвер не получает явных указаний на то, что выделение предназначено для сценариев видео, и может изначально выделить нематериальную непрерывную память. Ожидается, что драйверы будут использовать новую функцию "Свойства выделения обновлений ", предоставляемую диспетчером памяти, для планирования преобразования в физически непрерывное после отправки видео, которая фактически требует, чтобы она была физически непрерывной.

Характеристики оборудования, которые помещают оборудование на уровень 1:

* Для декодирования оборудования требуется физически непрерывная память для вывода и ссылок на декодирование. Входные буферы со сжатым битовым потоком также могут требовать физического непрерывного использования.

* Декодирование оборудования может иметь специальный формат плитки или другое определение макета памяти, которое несовместимо с другими подсистемами или видео операций.

Требования к сжатому входной буферу:

* Все срезы для заданного кадра должны располагаться по порядку и непрерывности (без зазоров между срезами).

* Драйверы не должны выполнять дополнительные копии данных битового потока.

* Первый срез должен начинаться с 128-байтовой границы.

* Оборудование должно поддерживать декодирование из буфера, выделенного из D3D12DDI_MEMORY_POOL_L0 (всегда системной памяти).

* Оборудование должно поддерживать декодирование из D3D12DDI_MEMORY_POOL_L1 (пул по умолчанию) с D3D12DDI_CPU_PAGE_PROPERTY_NOT_AVAILABLE.
D3D12DDI_VIDEO_DECODE_TIER_0020_2
Декодирование видео уровня 2. Уровень декодирования 2 позволяет вызывающей объекту выделять ссылочные и выходные текстуры в виде отдельных двухмерных ресурсов текстур. Приложение больше не требуется для выделения массивов текстур, но это необходимо поддерживать.

Декодирование уровня 2 не имеет физически непрерывных требований. Оборудование может иметь непрерывные требования к va (ускорение декодирования видео) на этом уровне, и приложения должны создавать массив текстур для этой поддержки.

Чтобы включить уровень 2, зарезервированные ресурсы, также называемые плитками или разреженными ресурсами, должны поддерживаться для форматов ссылок и выходных данных, поддерживаемых драйвером. Это можно сделать двумя способами:

* Если оборудование поддерживает gpu VA для каждого процесса и имеет шаблон плитки, который поддерживает требования к фигуре плитки зарезервированных ресурсов, можно использовать уже существующий механизм ресурсов D3D12.

* Если оборудование поддерживает gpu va для каждого процесса, но шаблон плитки не соответствует требованиям к фигуре плитки зарезервированных ресурсов, а оборудование может поддерживать сопоставление плиток, которое сопоставляет и отменяет сопоставление плиток для всего подресурса для каждого уровня планарного ресурса, который является отдельным подресурсом в D3D12, механизм требует, чтобы они могли сопоставляться с плитками и распаковать плитки независимо друг от друга. Обратите внимание, что этот механизм находится в разработке, но будет замаскировать фигуру плитки в API.

Характеристики оборудования, которые помещают оборудование на уровень 2:

* Не требуется физически непрерывная память.

* Оборудование имеет непрерывное требование va.

* Декодирование оборудования может иметь специальный формат плитки или другое определение макета памяти, которое несовместимо с другими подсистемами или видео операций.

Требования к сжатому входному буферу совпадают с требованиями уровня 1.
D3D12DDI_VIDEO_DECODE_TIER_0020_3
Декодирование видео уровня 3. Этот уровень поддерживается в WDDM 2.3.

Декодирование уровня 3 позволяет вызывающей объекту выделять ссылочные и выходные текстуры в качестве стандартных двухмерных ресурсов текстур. Приложение больше не требуется для выделения массивов текстур, но это необходимо поддерживать.

Декодирование уровня 3 не требует физически непрерывных выделений. Оборудование больше не должно требовать D3D12DDI_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY, но по-прежнему должно поддерживать его. При запросе D3D12DDI_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY член структуры D3D12DDI_VIDEO_DECODE_SUPPORT_DATA_0020 должен иметь значение FALSE.

Чтобы включить уровень 3, зарезервированные ресурсы (также называемые плиточными или разреженными) должны поддерживаться для форматов ссылок и выходных данных, поддерживаемых драйвером. Это может случиться в двух следующих сценариях.

* Если оборудование поддерживает gpu VA для каждого процесса и имеет шаблон плитки, который поддерживает требования к фигуре плитки зарезервированных ресурсов, можно использовать уже существующий механизм ресурсов D3D12.

* Если оборудование поддерживает gpu va для каждого процесса, но шаблон плитки не соответствует требованиям к фигуре плитки зарезервированных ресурсов, а оборудование может поддерживать сопоставление плиток, которое сопоставляет и отменяет сопоставление плиток для всего подресурса для каждого уровня планарного ресурса, который является отдельным подресурсом в D3D12, механизм требует, чтобы они могли сопоставляться с плитками и распаковать плитки независимо друг от друга. Обратите внимание, что этот механизм находится в разработке, но будет замаскировать фигуру плитки в API.

Требования к сжатому входному буферу совпадают с требованиями уровня 1.

Комментарии

Если для декодирования оборудования требуется уникальный формат плитки, который не поддерживается для операций с другими подсистемами или других операций с видео, декодер может задать D3D12DDI_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY в структуре D3D12DDI_VIDEO_DECODE_SUPPORT_DATA_0020 при запросе поддержки профиля. Этот флаг указывает, что приложение должно выделять ссылки с помощью флага D3D12DDI_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY. Если выходные данные требуются в качестве будущей опорной рамки, выходной кадр, передаваемый PFND3D12DDI_VIDEO_DECODE_FRAME, является ресурсом D3D12, который может использоваться другими частями конвейера и не должен иметь флаг D3D12DDI_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY.

В следующей таблице показаны различные возможности для каждого уровня.

Функция Уровень 1 Уровень 2 Уровень 3
Поддерживает отдельные выделенные опорные кадры и выходные данные. Нет Нет Обязательно
Поддерживает ссылки и выделяется в виде массива текстур. Обязательно Обязательно Обязательно
При необходимости может потребоваться флаг ресурса REFERENCE_ONLY. Обратите внимание, что все уровни должны работать с флагом, даже если он не требуется. Необязательно Необязательно Нет
Поддержка ссылок, выделенных с помощью REFERENCE_ONLY, даже если это не требуется. Обязательно Обязательно Обязательно
Поддерживает фрагментированные или разреженные ресурсы для ссылок, входных и выходных данных. Нет Обязательно Обязательно
Буферы входных потоков сжатых битов могут быть выделены как L0 (main системной памяти) или L1 (для dGPU, видеопамяти). Обязательно Обязательно Обязательно
Требуются сжатые битовые данные, чтобы срезы располагались в одном буфере без разрывов между срезами. Обязательно Обязательно Обязательно
Смещение до первого среза в сжатом входном буфере должно быть выровнено по 256 байтам. Обязательно Обязательно Обязательно
Драйверы не должны выполнять дополнительные копии сжатых битовых данных. Обязательно Обязательно Обязательно

Требования

Требование Значение
Заголовок d3d12umddi.h (включая D3d12umddi.h)