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


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

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

Синтаксис

typedef enum D3D12DDI_BARRIER_ACCESS {
  D3D12DDI_BARRIER_ACCESS_COMMON = 0x0,
  D3D12DDI_BARRIER_ACCESS_VERTEX_BUFFER = 0x1,
  D3D12DDI_BARRIER_ACCESS_CONSTANT_BUFFER = 0x2,
  D3D12DDI_BARRIER_ACCESS_INDEX_BUFFER = 0x4,
  D3D12DDI_BARRIER_ACCESS_RENDER_TARGET = 0x8,
  D3D12DDI_BARRIER_ACCESS_UNORDERED_ACCESS = 0x10,
  D3D12DDI_BARRIER_ACCESS_DEPTH_STENCIL_WRITE = 0x20,
  D3D12DDI_BARRIER_ACCESS_DEPTH_STENCIL_READ = 0x40,
  D3D12DDI_BARRIER_ACCESS_SHADER_RESOURCE = 0x80,
  D3D12DDI_BARRIER_ACCESS_STREAM_OUTPUT = 0x100,
  D3D12DDI_BARRIER_ACCESS_INDIRECT_ARGUMENT = 0x200,
  D3D12DDI_BARRIER_ACCESS_PREDICATION = 0x200,
  D3D12DDI_BARRIER_ACCESS_COPY_DEST = 0x400,
  D3D12DDI_BARRIER_ACCESS_COPY_SOURCE = 0x800,
  D3D12DDI_BARRIER_ACCESS_RESOLVE_DEST = 0x1000,
  D3D12DDI_BARRIER_ACCESS_RESOLVE_SOURCE = 0x2000,
  D3D12DDI_BARRIER_ACCESS_RAYTRACING_ACCELERATION_STRUCTURE_READ = 0x4000,
  D3D12DDI_BARRIER_ACCESS_RAYTRACING_ACCELERATION_STRUCTURE_WRITE = 0x8000,
  D3D12DDI_BARRIER_ACCESS_SHADING_RATE_SOURCE = 0x10000,
  D3D12DDI_BARRIER_ACCESS_VIDEO_DECODE_READ = 0x20000,
  D3D12DDI_BARRIER_ACCESS_VIDEO_DECODE_WRITE = 0x40000,
  D3D12DDI_BARRIER_ACCESS_VIDEO_PROCESS_READ = 0x80000,
  D3D12DDI_BARRIER_ACCESS_VIDEO_PROCESS_WRITE = 0x100000,
  D3D12DDI_BARRIER_ACCESS_VIDEO_ENCODE_READ = 0x200000,
  D3D12DDI_BARRIER_ACCESS_VIDEO_ENCODE_WRITE = 0x400000,
  D3D12DDI_BARRIER_ACCESS_NO_ACCESS = 0x80000000
} ;

Константы

 
D3D12DDI_BARRIER_ACCESS_COMMON
Значение: 0x0
Начальный доступ по умолчанию для всех ресурсов в заданной области ExecuteCommandLists. Поддерживает любой тип доступа, совместимый с текущими свойствами макета и ресурсов, включая не более одного доступа на запись. Для буферов и текстур с помощью D3D12DDI_BARRIER_LAYOUT_COMMOND3D12DDI_BARRIER_ACCESS_COMMON поддерживает одновременный доступ на чтение и запись.

При использовании в качестве AccessAfterD3D12DDI_BARRIER_ACCESS_COMMON можно использовать для возврата ресурса обратно в общую доступность. Обратите внимание, что это может привести к принудительному сбросу ненужных кэша при неправильном использовании. По возможности AccessAfter должны быть ограничены явными битами доступа.

Избегайте использования D3D12DDI_BARRIER_ACCESS_COMMON в качестве барьера значение AccessBefore. Любые угрозы чтения после записи или записи лучше всего обрабатываются с помощью явных Биты AccessBefore.
D3D12DDI_BARRIER_ACCESS_VERTEX_BUFFER
Значение: 0x1
Ресурс буфера доступен в качестве буфера вершин в текущей очереди выполнения.
D3D12DDI_BARRIER_ACCESS_CONSTANT_BUFFER
Значение: 0x2
Ресурс буфера доступен в виде буфера константы в текущей очереди выполнения.
D3D12DDI_BARRIER_ACCESS_INDEX_BUFFER
Значение: 0x4
Ресурс буфера доступен в качестве буфера индекса в текущей очереди выполнения.
D3D12DDI_BARRIER_ACCESS_RENDER_TARGET
Значение: 0x8
Ресурс доступен в качестве целевого объекта отрисовки.
D3D12DDI_BARRIER_ACCESS_UNORDERED_ACCESS
Значение: 0x10
Ресурс доступен как неупорядоченный ресурс доступа.
D3D12DDI_BARRIER_ACCESS_DEPTH_STENCIL_WRITE
Значение: 0x20
Ресурс доступен как ресурс с возможностью записи или набором элементов.
D3D12DDI_BARRIER_ACCESS_DEPTH_STENCIL_READ
Значение: 0x40
Ресурс доступен как ресурс только для чтения и набора элементов.
D3D12DDI_BARRIER_ACCESS_SHADER_RESOURCE
Значение: 0x80
Ресурс доступен как ресурс шейдера.
D3D12DDI_BARRIER_ACCESS_STREAM_OUTPUT
Значение: 0x100
Буфер доступен как целевой объект вывода потока.
D3D12DDI_BARRIER_ACCESS_INDIRECT_ARGUMENT
Значение: 0x200
Буфер доступен как непрямый буфер аргументов.
D3D12DDI_BARRIER_ACCESS_PREDICATION
Значение: 0x200
Буфер доступен в виде буфера предикаций. Псевдоним с D3D12DDI_BARRIER_ACCESS_INDIRECT_ARGUMENT.
D3D12DDI_BARRIER_ACCESS_COPY_DEST
Значение: 0x400
Ресурс доступен в качестве назначения копирования.
D3D12DDI_BARRIER_ACCESS_COPY_SOURCE
Значение: 0x800
Ресурс доступен как источник копирования.
D3D12DDI_BARRIER_ACCESS_RESOLVE_DEST
Значение: 0x1000
Ресурс доступен в качестве назначения разрешения.
D3D12DDI_BARRIER_ACCESS_RESOLVE_SOURCE
Значение: 0x2000
Ресурс доступен в качестве источника разрешения.
D3D12DDI_BARRIER_ACCESS_RAYTRACING_ACCELERATION_STRUCTURE_READ
Значение: 0x4000
Ресурс доступен для чтения как структуры ускорения трассировки лучей. Ресурс должен быть создан с помощью начального состояния D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE.
D3D12DDI_BARRIER_ACCESS_RAYTRACING_ACCELERATION_STRUCTURE_WRITE
Значение: 0x8000
Ресурс доступен для записи в виде структуры ускорения трассировки лучей. Ресурс должен быть создан с помощью начального состояния D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE.
D3D12DDI_BARRIER_ACCESS_SHADING_RATE_SOURCE
Значение: 0x10000
Ресурс доступен как источник скорости заливки.
D3D12DDI_BARRIER_ACCESS_VIDEO_DECODE_READ
Значение: 0x20000
Ресурс доступен для доступа только для чтения в очереди декодирования видео.
D3D12DDI_BARRIER_ACCESS_VIDEO_DECODE_WRITE
Значение: 0x40000
Ресурс доступен для доступа на запись в очереди декодирования видео.
D3D12DDI_BARRIER_ACCESS_VIDEO_PROCESS_READ
Значение: 0x80000
Ресурс доступен для доступа только для чтения в очереди видеопроцесса.
D3D12DDI_BARRIER_ACCESS_VIDEO_PROCESS_WRITE
Значение: 0x100000
Ресурс доступен для записи в очереди видеопроцесса.
D3D12DDI_BARRIER_ACCESS_VIDEO_ENCODE_READ
Значение: 0x200000
Ресурс доступен для доступа только для чтения в очереди видеокодирования.
D3D12DDI_BARRIER_ACCESS_VIDEO_ENCODE_WRITE
Значение: 0x400000
Ресурс доступен для доступа к записи в очереди видеокодирования.
D3D12DDI_BARRIER_ACCESS_NO_ACCESS
Значение: 0x80000000
Ресурс недоступен для чтения или записи. После перехода на D3D12DDI_BARRIER_ACCESS_NO_ACCESSдоступ к подресурсу необходимо повторно активировать с помощью барьера с AccessBefore установить значение D3D12DDI_BARRIER_ACCESS_NO_ACCESS перед использованием в той же области ExecuteCommandLists.

D3D12DDI_BARRIER_ACCESS_NO_ACCESS можно использовать только в сочетании с D3D12DDI_BARRIER_SYNC_NONE или D3D12DDI_BARRIER_SYNC_SPLIT.

D3D12DDI_BARRIER_ACCESS_NO_ACCESS нельзя задать с другими битами доступа. D3D12DDI_BARRIER_ACCESS_NO_ACCESS указывает, что доступ к ресурсу не ожидается, пока не будет доступен какой-либо последующий барьер или следующая область ECL.

Это значение полезно для псевдонима барьеров, когда подресурс не требуется достаточно долго, чтобы очистить подресурс из любого кэша чтения.

Кроме того, рекомендуется инициировать переход макета в качестве окончательного акта ресурса до окончания области ExecuteCommandLists. Если SyncAfterD3D12DDI_BARRIER_SYNC_NONE, AccessAfter должен быть D3D12DDI_BARRIER_ACCESS_NO_ACCESS.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 11 (WDDM 3.0)
заголовка d3d12umddi.h

См. также

D3D12DDI_BARRIER_SYNC

D3D12DDI_BUFFER_BARRIER_0088

D3D12DDI_GLOBAL_BARRIER_0088

D3D12DDI_RANGED_BARRIER_0088

D3D12DDI_TEXTURE_BARRIER_0088