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

Важно!

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

Значение D3D12DDI_BARRIER_LAYOUT описывает возможные макеты, используемые подресурсами D3D12 в отношении барьеров текстуры. Макеты применяются только к ресурсам текстур.

Синтаксис

typedef enum D3D12DDI_BARRIER_LAYOUT {
  D3D12DDI_BARRIER_LAYOUT_UNDEFINED = 0xffffffff,
  D3D12DDI_BARRIER_LAYOUT_COMMON = 0,
  D3D12DDI_BARRIER_LAYOUT_PRESENT = 0,
  D3D12DDI_BARRIER_LAYOUT_GENERIC_READ,
  D3D12DDI_BARRIER_LAYOUT_RENDER_TARGET,
  D3D12DDI_BARRIER_LAYOUT_UNORDERED_ACCESS,
  D3D12DDI_BARRIER_LAYOUT_DEPTH_STENCIL_WRITE,
  D3D12DDI_BARRIER_LAYOUT_DEPTH_STENCIL_READ,
  D3D12DDI_BARRIER_LAYOUT_SHADER_RESOURCE,
  D3D12DDI_BARRIER_LAYOUT_COPY_SOURCE,
  D3D12DDI_BARRIER_LAYOUT_COPY_DEST,
  D3D12DDI_BARRIER_LAYOUT_RESOLVE_SOURCE,
  D3D12DDI_BARRIER_LAYOUT_RESOLVE_DEST,
  D3D12DDI_BARRIER_LAYOUT_SHADING_RATE_SOURCE,
  D3D12DDI_BARRIER_LAYOUT_VIDEO_DECODE_READ,
  D3D12DDI_BARRIER_LAYOUT_VIDEO_DECODE_WRITE,
  D3D12DDI_BARRIER_LAYOUT_VIDEO_PROCESS_READ,
  D3D12DDI_BARRIER_LAYOUT_VIDEO_PROCESS_WRITE,
  D3D12DDI_BARRIER_LAYOUT_VIDEO_ENCODE_READ,
  D3D12DDI_BARRIER_LAYOUT_VIDEO_ENCODE_WRITE,
  D3D12DDI_BARRIER_LAYOUT_DIRECT_QUEUE_COMMON,
  D3D12DDI_BARRIER_LAYOUT_DIRECT_QUEUE_GENERIC_READ,
  D3D12DDI_BARRIER_LAYOUT_DIRECT_QUEUE_UNORDERED_ACCESS,
  D3D12DDI_BARRIER_LAYOUT_DIRECT_QUEUE_SHADER_RESOURCE,
  D3D12DDI_BARRIER_LAYOUT_DIRECT_QUEUE_COPY_SOURCE,
  D3D12DDI_BARRIER_LAYOUT_DIRECT_QUEUE_COPY_DEST,
  D3D12DDI_BARRIER_LAYOUT_COMPUTE_QUEUE_COMMON,
  D3D12DDI_BARRIER_LAYOUT_COMPUTE_QUEUE_GENERIC_READ,
  D3D12DDI_BARRIER_LAYOUT_COMPUTE_QUEUE_UNORDERED_ACCESS,
  D3D12DDI_BARRIER_LAYOUT_COMPUTE_QUEUE_SHADER_RESOURCE,
  D3D12DDI_BARRIER_LAYOUT_COMPUTE_QUEUE_COPY_SOURCE,
  D3D12DDI_BARRIER_LAYOUT_COMPUTE_QUEUE_COPY_DEST,
  D3D12DDI_BARRIER_LAYOUT_VIDEO_QUEUE_COMMON,
  D3D12DDI_BARRIER_LAYOUT_LEGACY_COPY_SOURCE = 0x80000000,
  D3D12DDI_BARRIER_LAYOUT_LEGACY_COPY_DEST,
  D3D12DDI_BARRIER_LAYOUT_LEGACY_SHADER_RESOURCE,
  D3D12DDI_BARRIER_LAYOUT_LEGACY_PIXEL_SHADER_RESOURCE
} ;

Константы

 
D3D12DDI_BARRIER_LAYOUT_UNDEFINED
Значение: 0xffffffff
Обеспечивает поддержку изменений макета подресурсов, где предыдущий макет не имеет значения или не определен. Как правило, он используется для команд полного подресурса или полного ресурса Очистить, Отменить и Копировать.

Переход макета с параметрами LayoutBefore и LayoutAfter , равными D3D12_BARRIER_LAYOUT_UNDEFINED , указывает на барьер доступа только к памяти. Многие операции чтения и записи поддерживают D3D12_BARRIER_LAYOUT_COMMON. В частности, команды копирования могут выполнять запись в текстуры с помощью D3D12_BARRIER_LAYOUT_COMMON или D3D12_BARRIER_LAYOUT_COPY. Барьер доступа только к памяти можно использовать для очистки операций записи копирования в текстуру без изменения макета текстуры.
D3D12DDI_BARRIER_LAYOUT_COMMON
Значение: 0
Это макет, используемый D3D12_RESOURCE_STATE_COMMON. Вложенные ресурсы с этим макетом доступны для чтения в очереди любого типа без необходимости изменения макета. Они также могут записываться в качестве места назначения копирования в любом типе очереди.

Для представления цепочки буферов требуется, чтобы задний буфер использовал D3D12_BARRIER_LAYOUT_COMMON.
D3D12DDI_BARRIER_LAYOUT_PRESENT
Значение: 0
Псевдоним для D3D12_BARRIER_LAYOUT_COMMON.
D3D12DDI_BARRIER_LAYOUT_GENERIC_READ
Обеспечивает поддержку любого доступа только для чтения (например, SHADER_RESOURCE, COPY_SOURCE). Это значение следует использовать только для текстур, для которых требуется несколько одновременных операций чтения, так как это может быть не так оптимально, как более конкретный макет для чтения.
D3D12DDI_BARRIER_LAYOUT_RENDER_TARGET
Соответствует макету, используемому D3D12_RESOURCE_STATE_RENDER_TARGET.
D3D12DDI_BARRIER_LAYOUT_UNORDERED_ACCESS
Соответствует макету, используемому D3D12_RESOURCE_STATE_UNORDERED_ACCESS.
D3D12DDI_BARRIER_LAYOUT_DEPTH_STENCIL_WRITE
Соответствует макету, используемому D3D12_RESOURCE_STATE_DEPTH_WRITE.
D3D12DDI_BARRIER_LAYOUT_DEPTH_STENCIL_READ
Соответствует макету, используемому D3D12_RESOURCE_STATE_DEPTH_READ.
D3D12DDI_BARRIER_LAYOUT_SHADER_RESOURCE
Соответствует макету, используемому D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE и D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE.
D3D12DDI_BARRIER_LAYOUT_COPY_SOURCE
Соответствует макету, используемому D3D12_RESOURCE_STATE_COPY_SOURCE.
D3D12DDI_BARRIER_LAYOUT_COPY_DEST
Соответствует макету, используемому D3D12_RESOURCE_STATE_COPY_DEST.
D3D12DDI_BARRIER_LAYOUT_RESOLVE_SOURCE
Соответствует макету, используемому D3D12DDI_RESOURCE_STATE_RESOLVE_SOURCE.
D3D12DDI_BARRIER_LAYOUT_RESOLVE_DEST
Соответствует макету, используемому D3D12DDI_RESOURCE_STATE_RESOLVE_DEST.
D3D12DDI_BARRIER_LAYOUT_SHADING_RATE_SOURCE
Соответствует макету, используемому D3D12DDI_RESOURCE_STATE_0062_SHADING_RATE_SOURCE.
D3D12DDI_BARRIER_LAYOUT_VIDEO_DECODE_READ
Соответствует макету, используемому D3D12_RESOURCE_STATE_VIDEO_DECODE_READ.
D3D12DDI_BARRIER_LAYOUT_VIDEO_DECODE_WRITE
Соответствует макету, используемому D3D12_RESOURCE_STATE_VIDEO_DECODE_WRITE.
D3D12DDI_BARRIER_LAYOUT_VIDEO_PROCESS_READ
Соответствует макету, используемому D3D12_RESOURCE_STATE_VIDEO_PROCESS_READ.
D3D12DDI_BARRIER_LAYOUT_VIDEO_PROCESS_WRITE
Соответствует макету, используемому D3D12_RESOURCE_STATE_VIDEO_PROCESS_WRITE.
D3D12DDI_BARRIER_LAYOUT_VIDEO_ENCODE_READ
Соответствует макету, используемому D3D12_RESOURCE_STATE_VIDEO_ENCODE_READ.
D3D12DDI_BARRIER_LAYOUT_VIDEO_ENCODE_WRITE
Соответствует макету, используемому D3D12_RESOURCE_STATE_VIDEO_ENCODE_WRITE.
D3D12DDI_BARRIER_LAYOUT_DIRECT_QUEUE_COMMON
Поддерживает общее использование (без барьеров) только в прямых очередях. Это значение является более оптимальным, чем более общее D3D12DDI_BARRIER_LAYOUT_COMMON. Может использоваться только в барьерах в прямых очередях.

Обратите внимание, что этот параметр нельзя использовать для параметра Present. D3D12_BARRIER_LAYOUT_COMMON (также известный как D3D12_BARRIER_LAYOUT_PRESENT) по-прежнему является обязательным макетом для презентации.
D3D12DDI_BARRIER_LAYOUT_DIRECT_QUEUE_GENERIC_READ
Аналогично D3D12_BARRIER_LAYOUT_GENERIC_READ за исключением оптимизаций, характерных для прямых очередей. Может использоваться только в барьерах в прямых очередях.

Кроме того, D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_GENERIC_READ включает поддержку глубины только для чтения, источника с частотой заливки и разрешения доступа к источнику в прямых очередях.
D3D12DDI_BARRIER_LAYOUT_DIRECT_QUEUE_UNORDERED_ACCESS
Аналогично D3D12_BARRIER_LAYOUT_UNORDERED_ACCESS за исключением оптимизаций, характерных для прямых очередей. Может использоваться только в барьерах в прямых очередях.
D3D12DDI_BARRIER_LAYOUT_DIRECT_QUEUE_SHADER_RESOURCE
То же, что и D3D12_BARRIER_LAYOUT_SHADER_RESOURCE за исключением оптимизаций, характерных для прямых очередей. Может использоваться только в барьерах в прямых очередях.
D3D12DDI_BARRIER_LAYOUT_DIRECT_QUEUE_COPY_SOURCE
То же, что и D3D12_BARRIER_LAYOUT_COPY_SOURCE за исключением оптимизаций, характерных для прямых очередей. Может использоваться только в барьерах в прямых очередях.
D3D12DDI_BARRIER_LAYOUT_DIRECT_QUEUE_COPY_DEST
То же, что и D3D12_BARRIER_LAYOUT_COPY_DEST за исключением оптимизаций, характерных для прямых очередей. Может использоваться только в барьерах в прямых очередях. Может предотвратить дорогостоящую и ненужную распаковку при некоторых переходах макета для ресурсов со следующим доступом в прямой очереди.
D3D12DDI_BARRIER_LAYOUT_COMPUTE_QUEUE_COMMON
Поддерживает общее использование (без барьеров) только в очередях вычислений. Может быть более оптимальным, чем более общий D3D12_BARRIER_LAYOUT_COMMON. Может использоваться только в барьерах в очередях вычислений.
D3D12DDI_BARRIER_LAYOUT_COMPUTE_QUEUE_GENERIC_READ
Аналогично D3D12_BARRIER_LAYOUT_GENERIC_READ за исключением оптимизаций, характерных для очередей вычислений. Может использоваться только в барьерах в очередях вычислений.
D3D12DDI_BARRIER_LAYOUT_COMPUTE_QUEUE_UNORDERED_ACCESS
Аналогично D3D12_BARRIER_LAYOUT_UNORDERED_ACCESS за исключением оптимизаций, характерных для очередей вычислений. Может использоваться только в барьерах в очередях вычислений.
D3D12DDI_BARRIER_LAYOUT_COMPUTE_QUEUE_SHADER_RESOURCE
То же, что и D3D12_BARRIER_LAYOUT_SHADER_RESOURCE за исключением оптимизаций, характерных для очередей вычислений. Может использоваться только в барьерах в очередях вычислений.
D3D12DDI_BARRIER_LAYOUT_COMPUTE_QUEUE_COPY_SOURCE
Аналогично D3D12_BARRIER_LAYOUT_COPY_SOURCE за исключением оптимизаций, характерных для очередей вычислений. Может использоваться только в барьерах в очередях вычислений.
D3D12DDI_BARRIER_LAYOUT_COMPUTE_QUEUE_COPY_DEST
Аналогично D3D12_BARRIER_LAYOUT_COPY_DEST за исключением оптимизаций, характерных для очередей вычислений. Может использоваться только в барьерах в очередях вычислений.
D3D12DDI_BARRIER_LAYOUT_VIDEO_QUEUE_COMMON
Поддерживает общее использование (без барьеров) только в очередях видео. Может быть более оптимальным, чем более общий D3D12_BARRIER_LAYOUT_COMMON. Может использоваться только в барьерах в очередях видео.
D3D12DDI_BARRIER_LAYOUT_LEGACY_COPY_SOURCE
Значение: 0x80000000
Поддерживает внутренне преобразованное состояние ресурса прежних версий. С этим значением не сопоставлены API-интерфейсы расширенных барьеров.
D3D12DDI_BARRIER_LAYOUT_LEGACY_COPY_DEST
Поддерживает внутренне преобразованное состояние ресурса прежних версий. С этим значением не сопоставлены API-интерфейсы расширенных барьеров.
D3D12DDI_BARRIER_LAYOUT_LEGACY_SHADER_RESOURCE
Поддерживает внутренне преобразованное состояние ресурса прежних версий. С этим значением не сопоставлены API-интерфейсы расширенных барьеров.
D3D12DDI_BARRIER_LAYOUT_LEGACY_PIXEL_SHADER_RESOURCE
Поддерживает внутренне преобразованное состояние ресурса прежних версий. С этим значением не сопоставлены API-интерфейсы расширенных барьеров.

Комментарии

Ресурсы буфера имеют только линейную структуру, независимо от типа доступа.

Макеты ресурсов должны быть совместимы с типом очереди, выполняющей переход макета.

Требования

Требование Значение
Минимальная версия клиента Windows 11 (WDDM 3.0)
Верхняя часть d3d12umddi.h

См. также раздел

D3D12DDI_TEXTURE_BARRIER_0088