Перечисление D3D12_RESOURCE_STATES (d3d12.h)

Определяет константы, указывающие состояние ресурса относительно того, как он используется.

Синтаксис

typedef enum D3D12_RESOURCE_STATES {
  D3D12_RESOURCE_STATE_COMMON = 0,
  D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER = 0x1,
  D3D12_RESOURCE_STATE_INDEX_BUFFER = 0x2,
  D3D12_RESOURCE_STATE_RENDER_TARGET = 0x4,
  D3D12_RESOURCE_STATE_UNORDERED_ACCESS = 0x8,
  D3D12_RESOURCE_STATE_DEPTH_WRITE = 0x10,
  D3D12_RESOURCE_STATE_DEPTH_READ = 0x20,
  D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE = 0x40,
  D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE = 0x80,
  D3D12_RESOURCE_STATE_STREAM_OUT = 0x100,
  D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT = 0x200,
  D3D12_RESOURCE_STATE_COPY_DEST = 0x400,
  D3D12_RESOURCE_STATE_COPY_SOURCE = 0x800,
  D3D12_RESOURCE_STATE_RESOLVE_DEST = 0x1000,
  D3D12_RESOURCE_STATE_RESOLVE_SOURCE = 0x2000,
  D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE = 0x400000,
  D3D12_RESOURCE_STATE_SHADING_RATE_SOURCE = 0x1000000,
  D3D12_RESOURCE_STATE_RESERVED_INTERNAL_8000,
  D3D12_RESOURCE_STATE_RESERVED_INTERNAL_4000,
  D3D12_RESOURCE_STATE_RESERVED_INTERNAL_100000,
  D3D12_RESOURCE_STATE_RESERVED_INTERNAL_40000000,
  D3D12_RESOURCE_STATE_RESERVED_INTERNAL_80000000,
  D3D12_RESOURCE_STATE_GENERIC_READ,
  D3D12_RESOURCE_STATE_ALL_SHADER_RESOURCE,
  D3D12_RESOURCE_STATE_PRESENT = 0,
  D3D12_RESOURCE_STATE_PREDICATION = 0x200,
  D3D12_RESOURCE_STATE_VIDEO_DECODE_READ = 0x10000,
  D3D12_RESOURCE_STATE_VIDEO_DECODE_WRITE = 0x20000,
  D3D12_RESOURCE_STATE_VIDEO_PROCESS_READ = 0x40000,
  D3D12_RESOURCE_STATE_VIDEO_PROCESS_WRITE = 0x80000,
  D3D12_RESOURCE_STATE_VIDEO_ENCODE_READ = 0x200000,
  D3D12_RESOURCE_STATE_VIDEO_ENCODE_WRITE = 0x800000
} ;

Константы

 
D3D12_RESOURCE_STATE_COMMON
Значение: 0
Приложение должно переходить в это состояние только для доступа к ресурсу в разных типах графического обработчика.

В частности, ресурс должен находиться в состоянии COMMON перед использованием в очереди COPY (при использовании ранее в DIRECT/COMPUTE) и перед использованием в DIRECT/COMPUTE (при использовании ранее в COPY). Это ограничение не существует при доступе к данным между очередями DIRECT и COMPUTE.

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

Кроме того, текстуры должны находиться в общем состоянии, чтобы доступ к ЦП был законным, при условии, что текстура была создана в куче, видимой для ЦП.
D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER
Значение: 0x1
Подресурс должен находиться в этом состоянии, когда к нему обращается GPU в качестве буфера вершин или буфера констант. Это состояние доступно только для чтения.
D3D12_RESOURCE_STATE_INDEX_BUFFER
Значение: 0x2
Вложенный ресурс должен находиться в этом состоянии при обращении к нему из трехмерного конвейера в качестве буфера индекса. Это состояние доступно только для чтения.
D3D12_RESOURCE_STATE_RENDER_TARGET
Значение: 0x4
Ресурс используется в качестве целевого объекта отрисовки. Вложенный ресурс должен находиться в этом состоянии при отрисовке или при очистке с помощью ID3D12GraphicsCommandList::ClearRenderTargetView.

Это состояние доступно только для записи. Для чтения из целевого объекта отрисовки в качестве ресурса шейдера ресурс должен находиться в D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE или D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE.
D3D12_RESOURCE_STATE_UNORDERED_ACCESS
Значение: 0x8
Ресурс используется для неупорядоченного доступа. Вложенный ресурс должен находиться в этом состоянии, если к нему обращается GPU через представление неупорядоченного доступа. Вложенный ресурс также должен находиться в этом состоянии при очистке с помощью ID3D12GraphicsCommandList::ClearUnorderedAccessViewInt или ID3D12GraphicsCommandList::ClearUnorderedAccessViewFloat. Это состояние чтения и записи.
D3D12_RESOURCE_STATE_DEPTH_WRITE
Значение: 0x10
D3D12_RESOURCE_STATE_DEPTH_WRITE является состоянием, которое является взаимоисключающим с другими состояниями. Его следует использовать для ID3D12GraphicsCommandList::ClearDepthStencilView , когда флаги (см . D3D12_CLEAR_FLAGS) указывают, что данный подресурс должен быть очищен (в противном случае состояние подресурса не имеет значения), или при использовании его в представлении трафарета глубины, доступном для записи (см. D3D12_DSV_FLAGS), если в PSO включена запись глубины (см . D3D12_DEPTH_STENCIL_DESC).
D3D12_RESOURCE_STATE_DEPTH_READ
Значение: 0x20
DEPTH_READ — это состояние, которое можно комбинировать с другими состояниями. Его следует использовать, если вложенный ресурс находится в представлении трафарета глубины только для чтения или если запись глубины для D3D12_DEPTH_STENCIL_DESC отключена. Его можно сочетать с другими состояниями чтения (например, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE), чтобы ресурс можно было использовать для проверки глубины или набора элементов и обращаться к нему шейдер в том же вызове draw. Использовать его, когда глубина будет записана вызовом draw или командой clear, недопустимо.
D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE
Значение: 0x40
Ресурс используется с шейдером, отличным от пиксельного шейдера. Подресурс должен находиться в этом состоянии перед чтением на любом этапе (за исключением этапа шейдера пикселей) через представление ресурсов шейдера. Ресурс по-прежнему можно использовать в пиксельном шейдере с этим флагом, если для него также установлен флаг D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE . Это состояние доступно только для чтения.
D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE
Значение: 0x80
Ресурс используется с пиксельным шейдером. Подресурс должен находиться в этом состоянии перед чтением пиксельным шейдером через представление ресурсов шейдера. Это состояние доступно только для чтения.
D3D12_RESOURCE_STATE_STREAM_OUT
Значение: 0x100
Ресурс используется с выходными данными потока. Вложенный ресурс должен находиться в этом состоянии при доступе к нему из трехмерного конвейера в качестве целевого объекта потоковой передачи. Это состояние доступно только для записи.
D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT
Значение: 0x200
Ресурс используется в качестве косвенного аргумента.
Вложенные ресурсы должны находиться в этом состоянии, если они используются в качестве буфера аргументов, передаваемого в косвенный метод рисования ID3D12GraphicsCommandList::ExecuteIndirect.
Это состояние доступно только для чтения.
D3D12_RESOURCE_STATE_COPY_DEST
Значение: 0x400
Ресурс используется в качестве назначения в операции копирования.
Вложенные ресурсы должны находиться в этом состоянии, если они используются в качестве назначения операции копирования или операции blt.
Это состояние доступно только для записи.
D3D12_RESOURCE_STATE_COPY_SOURCE
Значение: 0x800
Ресурс используется в качестве источника в операции копирования.
Вложенные ресурсы должны находиться в этом состоянии, если они используются в качестве источника операции копирования или операции blt.
Это состояние доступно только для чтения.
D3D12_RESOURCE_STATE_RESOLVE_DEST
Значение: 0x1000
Ресурс используется в качестве назначения в операции разрешения.
D3D12_RESOURCE_STATE_RESOLVE_SOURCE
Значение: 0x2000
Ресурс используется в качестве источника в операции разрешения.
D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE
Значение: 0x400000
Когда буфер создается с этим начальным состоянием, он указывает, что ресурс является структурой ускорения лучей для использования в ID3D12GraphicsCommandList4::BuildRaytracingAccelerationStructure, ID3D12GraphicsCommandList4::CopyRaytracingAccelerationStructure или ID3D12Device::CreateShaderResourceView для измерения D3D12_SRV_DIMENSION_RAYTRACING_ACCELERATION_STRUCTURE .

ПРИМЕЧАНИЕ

Ресурс, используемый для D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE состояния, должен быть создан в этом состоянии, а затем никогда не переходить из него. В него также не может быть перенесен ресурс, который был создан не в этом состоянии. Дополнительные сведения см. в разделе Ограничения памяти структуры ускорения в функциональной спецификации DirectX raytracing (DXR) на GitHub.

D3D12_RESOURCE_STATE_SHADING_RATE_SOURCE
Значение: 0x1000000
Начиная с Windows 10 версии 1903 (10.0; Сборка 18362). Указывает, что ресурс является изображением уровня затенения экранного пространства для заливки с переменной скоростью (VRS). Дополнительные сведения см. в разделе Заливка с переменной скоростью (VRS).
D3D12_RESOURCE_STATE_GENERIC_READ
D3D12_RESOURCE_STATE_GENERIC_READ является логическим сочетанием или других битов состояния чтения. Это обязательное начальное состояние для кучи отправки. Приложение, как правило, не должно переходить на D3D12_RESOURCE_STATE_GENERIC_READ, когда это возможно, так как это может привести к преждевременной очистке кэша или изменению макета ресурсов (например, сжатие или распаковка), что приведет к ненужным застоям конвейера. Вместо этого следует переводить ресурсы только в фактически используемые состояния.
D3D12_RESOURCE_STATE_ALL_SHADER_RESOURCE
Эквивалент D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE | D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE.
D3D12_RESOURCE_STATE_PRESENT
Значение: 0
Синоним D3D12_RESOURCE_STATE_COMMON.
D3D12_RESOURCE_STATE_PREDICATION
Значение: 0x200
Ресурс используется для предикаций.
D3D12_RESOURCE_STATE_VIDEO_DECODE_READ
Значение: 0x10000
Ресурс используется в качестве источника в операции декодирования. Примеры включают чтение сжатого битового потока и чтение из ссылок на декодирование.
D3D12_RESOURCE_STATE_VIDEO_DECODE_WRITE
Значение: 0x20000
Ресурс используется в качестве назначения в операции декодирования. Это состояние используется для декодирования выходных данных и гистограмм.
D3D12_RESOURCE_STATE_VIDEO_PROCESS_READ
Значение: 0x40000
Ресурс используется для чтения видеоданных во время обработки видео; то есть ресурс используется в качестве источника в операции обработки, такой как кодирование видео (сжатие).
D3D12_RESOURCE_STATE_VIDEO_PROCESS_WRITE
Значение: 0x80000
Ресурс используется для записи видеоданных во время обработки видео; то есть ресурс используется в качестве назначения в операции обработки, такой как кодирование видео (сжатие).
D3D12_RESOURCE_STATE_VIDEO_ENCODE_READ
Значение: 0x200000
Ресурс используется в качестве источника в операции кодирования. Это состояние используется для ввода и ссылки на оценку движения.
D3D12_RESOURCE_STATE_VIDEO_ENCODE_WRITE
Значение: 0x800000
Этот ресурс используется в качестве назначения в операции кодирования. Это состояние используется для конечной текстуры операции кучи вектора движения.

Комментарии

Это перечисление используется следующими методами:

Требования

   
Верхняя часть d3d12.h

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