Nvidia tiene una extensión para crear buffers de comandos en GL moderno .
La razón de la falta de una funcionalidad similar es que hay mucho estado involucrado con respecto a cómo renderizar y la lista de visualización se ve afectada por muchos estados diferentes. Por ejemplo, cambiar el estado de mezcla requiere parchear el sombreador de fragmentos en algún hardware.
NVidia lo resolvió capturando todo el estado y restableciéndolo después de un envío:
1) ¿Qué motiva el diseño?
El objetivo principal es poder reutilizar buffers de comandos previamente validados. Otras API y propuestas han abordado esto con varias encarnaciones de listas de comandos u objetos de estado, pero un problema recurrente es que las interacciones entre varias etapas de la tubería evitan esta prevalidación y reutilización. Estas interacciones a menudo son específicas del hardware (y difieren de un proveedor a otro o incluso de generación en generación) y las nuevas funciones se introdujeron mediante nuevas características que no se imaginaron cuando se propuso el esquema de prevalidación.
Intentamos abordar esto teniendo un objeto de estado monolítico que abarca (casi) todo el estado de la tubería. Esto debería proporcionar suficiente información para todas las implementaciones para realizar cualquier validación cruzada necesaria. Intentamos crearlos de una manera que minimice la nueva huella de API, ya que queremos TODOS los estados (incluidos los que se agreguen en el futuro), simplemente los capturamos del estado actual del contexto.
[...]
23) ¿En qué condición queda el estado, que es modificado por tokens, después de la llamada de despacho?
RESUELTO: el estado se restablece.
(del texto de extensión vinculado anteriormente)
Sin embargo, el verdadero sucesor es la funcionalidad del búfer de comandos en DX12 y vulkan. Esos también capturarán todo el estado de representación en un solo objeto para usar al crear y llenar el búfer de comandos. La extensión de NVidia se basa en esa arquitectura como resultado de la participación de NVidia en el diseño de Vulkan.
monstruo de trinquete
fuente