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


Функция IddCxSwapChainReleaseAndAcquireBuffer2 (iddcx.h)

Это важно

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

Косвенный драйвер отображения вызывает IddCxSwapChainReleaseAndAcquireBuffer2, чтобы освободить текущий буфер в цепочке буферов и получить новый. Драйвер, поддерживающий адаптеры HDR, должен использовать IddCxSwapChainReleaseAndAcquireBuffer2 вместо IddCxSwapChainReleaseAndAcquireBuffer и IddCxSwapChainReleaseAndAcquireSystemBuffer.

Синтаксис

HRESULT IddCxSwapChainReleaseAndAcquireBuffer2(
  IDDCX_SWAPCHAIN                    SwapChainObject,
  IDARG_IN_RELEASEANDACQUIREBUFFER2  *pInArgs,
  IDARG_OUT_RELEASEANDACQUIREBUFFER2 *pOutArgs
);

Параметры

SwapChainObject

[in] Объект цепочки буферов, ранее переданный ОС драйверу в вызове EVT_IDD_CX_MONITOR_ASSIGN_SWAPCHAIN.

pInArgs

[in] Указатель на структуру IDARG_IN_RELEASEANDACQUIREBUFFER2, содержащую входные аргументы для функции.

pOutArgs

[out] Указатель на структуру IDARG_OUT_RELEASEANDACQUIREBUFFER2, в которой возвращаются выходные аргументы функции.

Возвращаемое значение

IddCxSwapChainReleaseAndAcquireBuffer2 возвращает S_OK при успешном выполнении; в противном случае возвращается соответствующий код ошибки.

Замечания

Цветовое пространство поверхности, переданное в структуре IDDCX_METADATA2, также передается драйверу. Это связано с тем, что он может изменяться на основе кадра и не совпадать с цветовой областью, указанной при фиксации режима.

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

Белый уровень содержимого SDR также включается для применения к курсорам мыши.

Если IDDCX_METADATA2_VALID_FLAGS_HDR10METADATA задано в IDDCX_METADATA2::ValidFlags, то IDDCX_METADATA2::Hdr10FrameMetaData содержит допустимые данные. Эти метаданные могут быть одним из трех типов:

  • Новые данные, которые должен использовать драйвер.
  • Указывает, что метаданные по умолчанию, ранее отправленные драйверу в вызове EVT_IDD_CX_MONITOR_SET_DEFAULT_HDR_METADATA, должны использоваться.
  • Указывает, что все метаданные, которые ранее были отправлены, следует использовать повторно. Если тип по умолчанию или без изменений, значения в IDDCX_HDR10_FRAME_METADATA::NewMetaData недопустимы.

IddCxSwapChainReleaseAndAcquireBuffer2 также заменяет IddCxSwapChainReleaseAndAcquireSystemBuffer. Драйвер, который вызвал бы IddCxSwapChainReleaseAndAcquireSystemBuffer может задать IDARG_IN_RELEASEANDACQUIREBUFFER2::AcquireSystemMemoryBuffer, чтобы указать, что он должен IDDCX_METADATA2::SystemBufferInfo.

Драйверы версии 1.10, не сообщающие поддержке FP16, по-прежнему могут вызывать эту функцию, если она доступна в ОС.

Дополнительные сведения о поддержке HDR см. в обновлениях IddCx версии 1.10.

Когда поверхности цепочки буферов D3D12 предоставляются драйверу, есть некоторые дополнительные данные, которые необходимо передать в ОС, чтобы обеспечить правильность синхронизации доступа к поверхности с ОС. Объект ID3D12CommandQueue в драйвере отправляет команды, которые используют область цепочки буферов в качестве входных данных, необходимо указать в ОС, чтобы он смог правильно синхронизировать чтение драйвера с записью ОС.

В момент, когда драйвер вызывает IddCxSwapChainReleaseAndAcquireBuffer2, ОС использует это в качестве указания, что драйвер готов отправить работу, которая использует поверхность цепочки буферов. Если драйвер отправляет другие работы в ту же очередь команд, это может быть отложено без необходимости.

Удаленные метаданные HDR

ОС не передает метаданные HDR удаленным драйверам, так как метаданные HDR в клиентской системе должны использоваться, а не сервером. Для удаленных драйверов IDDCX_METADATA2_VALID_FLAGS_HDR10METADATA никогда не будет задано.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 11, 26H1 (IddCx 1.11)
целевая платформа Windows
заголовка iddcx.h

См. также

IDARG_IN_RELEASEANDACQUIREBUFFER2

IDARG_OUT_RELEASEANDACQUIREBUFFER2

IDDCX_METADATA2