Передача данных из выходного ресурса вычислительного конвейера в образ подкачки в DirectX 12? - PullRequest
0 голосов
/ 29 июня 2019

Я столкнулся со следующим сценарием:

0) У меня есть конвейер вычислений, который выдает выходные данные, которые я хотел бы дословно скопировать в цели рендеринга, представленные цепочкой обмена.

1) В DirectX 11 конвейер вычислений мог записать непосредственно в цель рендеринга, выставленную цепочкой обмена, но это невозможно сделать в DirectX 12 (см. Обсуждение здесь: D3D12 Использовать поверхность буферного буфера как представление неупорядоченного доступа (БПЛА) )

2) Поэтому мой конвейер вычислений должен будет выполнить запись в выходной ресурс X, который не является целью рендеринга, предоставляемой цепочкой обмена.

Вопрос: Каков наилучший / самый простой способ передачи данных из X в цель рендеринга, выставленную с помощью цепочки обмена?

Есть только одно возможное решение, о котором я знаю: иметь «фиктивный» графический конвейер, который ничего не делаеткроме как взять данные из X и записать их в цель рендеринга.

1 Ответ

0 голосов
/ 30 июня 2019

Можно напрямую скопировать из промежуточного буфера (который мы решили назвать X) в образ свопчейна, используя CopyTextureRegion. Тем не менее, в соответствии с обсуждением здесь будет трудно сопоставить формат изображения swapchain и X, и для копирования лучше использовать графический конвейер, поскольку он может обрабатывать изменения формата.

...