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


Улучшения производительности отрисовки Direct3D

Драйверы WDDM 1.3 и более поздних версий могут поддерживать улучшения производительности отрисовки Microsoft Direct3D, что позволяет оборудованию Direct3D 9 лучше использовать аппаратные буферы команд и счетчики, а также создавать эффективные копии системной памяти в вложенные ресурсы. Эти возможности, которые зеркало некоторые возможности, доступные для оборудования Direct3D версии 10, являются новыми, начиная с Windows 8.1.

Также доступны новые улучшения производительности ресурсов Direct3D 11.1 и карты по умолчанию. Сценарий карты по умолчанию описан в разделе Изменения поведения ниже.

Справочник по производительности отрисовки

В этом справочном разделе описываются интерфейсы драйверов устройств в пользовательском режиме (DIS).

Функции производительности отрисовки Direct3D, реализованные драйвером пользовательского режима

В этом разделе содержатся функции, которые реализует драйвер WDDM 1.3 и более поздних версий в пользовательском режиме для улучшения производительности отрисовки в Microsoft Direct3D.

PFND3DDDI_FLUSH1: PFND3DDDI_CHECKCOUNTERINFO

PFND3DDDI_CHECKCOUNTER: PFND3DDDI_UPDATESUBRESOURCEUP

Отрисовка структур производительности и перечислений Direct3D

Эти структуры и перечисления пользовательского режима поддерживают повышение производительности отрисовки и являются новыми или обновленными для Windows 8.1. Все драйверы применяются к драйверам Уровня 9 Direct3D, за исключением D3D11_1_DDI_FLUSH_FLAGS.

Требования к реализации DDI, начиная с WDDM 1.3

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

Группа функций Описание

Функции Direct3D 9, которые являются необязательными до WDDM 1.3. Теперь требуется:

Функции Direct3D 9, доступные начиная с WDDM 1.3. Драйвер должен реализовывать все эти функции или ни одну из них:

При реализации WDDM 1.3 и более поздних дополнительных функций, непосредственно описанных выше, эти функции имеют связанные изменения в поведении:

  • BltDXGI — собственное промежуточное хранение
  • Blt1DXGI — собственное промежуточное хранение
  • CreateResource2 — собственные промежуточные текстуры, большие текстуры захвата
  • GetCaps — метки времени, простое вставка
  • Блокировка — собственное промежуточное хранение
  • TexBlt1 — собственное промежуточное хранение
  • Разблокировка — собственное промежуточное хранение
  • VolBlt1 — собственное промежуточное хранение

Эти сценарии применяются при вызове Метода GetCaps :

  • Если задано D3DDDICAPS_GETD3DQUERYDATA , драйвер может дополнительно сообщить о поддержке меток времени, а это означает, что среда выполнения Direct3D не маскирует поддержку.
  • Если задано D3DDDICAPS_GET_SIMPLE_INSTANCING_SUPPORT , драйвер может сообщить о дополнительной аппаратной поддержке для инстансинга.

Эти функции Direct3D 11 имеют связанные изменения в поведении:

  • CreateResource(D3D11) — карта буфера по умолчанию (см. раздел Изменения поведения ниже)
  • pfnFlush1 — обрезка ресурса
  • ResourceMap — карта буфера по умолчанию (см. раздел Изменения поведения ниже)
  • ResourceUnmap — карта буфера по умолчанию (см. раздел Изменения поведения ниже)

Изменения в поведении вызовов функций создания, сопоставления и отмены сопоставления ресурсов

Для этих функций, реализованных драйверами WDDM 1.3 и более поздних версий, среда выполнения Direct3D предоставляет ограниченный набор входных значений для сценария сопоставления по умолчанию. Эти ограниченные значения применяются только к драйверам, поддерживающим уровень функций 11.1 и более поздних версий.

ФункцияCreateResource(D3D11)

Эти входные D3D11DDIARG_CREATERESOURCE члены структуры ограничены:

Член Описание

ResourceDimension и использование

Эти изменения в поведении применяются только в том случае, если среда выполнения Direct3D предоставляет тип D3D10DDIRESOURCE_BUFFER для ResourceDimension и тип D3D10_DDI_USAGE_DEFAULT для параметра Usage.

BindFlags

Среда выполнения Direct3D задает только значения D3D10_DDI_BIND_SHADER_RESOURCE и D3D11_DDI_BIND_UNORDERED_ACCESS .

MapFlags

Если выполнены все остальные требования к членам, перечисленные здесь, среда выполнения может задать D3D10_DDI_MAP_READ, D3D10_DDI_MAP_WRITE и D3D10_DDI_MAP_READWRITE значения. Драйвер должен поддерживать эти значения. Недопустимые значения D3D10_DDI_MAP_WRITE_DISCARD и D3D10_DDI_MAP_WRITE_NOOVERWRITE .

MiscFlags

Среда выполнения задает только значения D3D11_DDI_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS и D3D11_DDI_RESOURCE_MISC_BUFFER_STRUCTURED .

Формат

Среда выполнения задает только значение DXGI_FORMAT_UNKNOWN .

SampleDesc

Среда выполнения задает DXGI_SAMPLE_DESC. Считайте элемент равным 1, а элемент Quality равным нулю.

MipLevels

Среда выполнения задает значение 1.

ArraySize

Среда выполнения задает значение 1.

pPrimaryDesc

Среда выполнения задает значение NULL.

Функция ResourceMap

Эти входные параметры для ResourceMap ограничены:

Параметр Описание

hResource

Среда выполнения Direct3D задает только D3D10DDIRESOURCE_BUFFER ресурс, если в вызове создания CreateResource(D3D11) задано ненулевое значение mapFlags.

Среда выполнения задает только значение DXGI_FORMAT_UNKNOWN .

Подресурс

Среда выполнения задает только значение 0.

DDIMap

Если все остальные требования к элементам, перечисленные здесь, выполнены, среда выполнения может задать D3D10_DDI_MAP_READ, D3D10_DDI_MAP_WRITE или D3D10_DDI_MAP_READWRITE значения, соответствующие значению MapFlags, заданному в вызове создания CreateResource(D3D11).

Флаги

Хотя входное значение из среды выполнения не ограничено, драйвер должен поддерживать значение D3D10_DDI_MAP_FLAG_DONOTWAIT .

pMappedSubResource

Хотя входное значение из среды выполнения не ограничено, драйвер должен назначить D3D10DDI_MAPPED_SUBRESOURCE допустимый указатель, кэшируемый ЦП. Элемент pData и должны задавать RowPitch и DepthPitch в соответствии с размером буфера и данными, предоставленными в pData.

Функция ResourceUnmap:

Эти входные параметры для ResourceUnmap ограничены:

Параметр Описание

hDevice

Хотя входное значение из среды выполнения Direct3D не ограничено, значение, соответствующее значению hDevice из исходного вызова ResourceMap .

hResource

Среда выполнения задает только D3D10DDIRESOURCE_BUFFER ресурс, если в вызове createResource(D3D11) задано ненулевое значение для MapFlags.

Подресурс

Среда выполнения задает только значение 0.