Для традиционных API (API буферов команд) единственное, что действительно имеет значение, - это количество используемых вами буферов. Графический конвейер может быть конвейерным, но конвейер не настолько глубок, чтобы одновременно обрабатывать несколько полностью отдельных кадров. Таким образом, очередь (и) графического процессора и сам графический процессор обычно обрабатывают только один кадр.
И поскольку в этих API нет реального способа создавать командные данные для нескольких полных кадров, количество кадров, которые вы можете иметь в полете, будет ограничено количеством фактически используемых вами буферов. Количество кадров задержки обычно равно количеству буферов + 1, представляющему создаваемый вами кадр.
Для API командного буфера количество кадров обычно зависит от того, сколько памяти ЦП у вас есть. Количество буферов обеспечивает минимум, но технически ничто не мешает вам заранее буферизовать десятки или сотни кадров. Вне памяти процессора.
Конечно, это предполагает, что все ваши покадровые данные находятся в CB. Если какие-либо из этих данных находятся в доступной графическому процессору памяти (например, массивы матриц и т. Д.), Или вам нужно изменить наборы дескрипторов между кадрами, то теперь у вас есть другой набор вещей для буферизации. Это накладывает дополнительное ограничение на то, насколько далеко могут заходить вещи.
person
Nicol Bolas
schedule
12.12.2016