Перечисление 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 |