Khronos Group presenta una nueva extensión de Vulkan abierta para eliminar la necesidad de tuberías


El Grupo Khronos reveló a principios de esta semana que la extensión Vulkan permitiría a varios proveedores intentar permitir el acceso para administrar fácilmente cómo el software puede «especificar sombreadores y estados de sombreado». La nueva extensión se cambia a VK_EXT_shader_object, que presentará «un nuevo tipo de objeto VkShaderEXT que representa una sola etapa de sombreador compilado». La compañía agregará cuatro nuevas funciones para usar y ajustar objetos en la nueva extensión Vulkan.

Vulkan ahora se puede implementar en proyectos futuros sin necesidad de canalizaciones

La eliminación de canalizaciones para la extensión de Vulkan permite una mayor flexibilidad y simplicidad al usar objetos de sombreado, lo que permite a los proveedores elegir utilizar solo canalizaciones, objetos de sombreado o una combinación de ambos para cada proyecto.

Los objetos Shader funcionan de manera diferente a las canalizaciones en eso:

  • Las canalizaciones requieren que todas las combinaciones deseadas de sombreadores (todas las etapas cuando se usan canalizaciones «monolíticas» convencionales o ciertas combinaciones predefinidas de etapas cuando se usan bibliotecas de canalizaciones) se compilen juntas. Por el contrario, los objetos shader permiten ensamblar etapas en combinaciones arbitrarias, incluida la compilación de cada shader individualmente.
  • Con las canalizaciones, la vinculación es un paso explícito que crea un nuevo objeto con vida propia que debe ser administrado por la aplicación. Con los objetos shader, la vinculación es simplemente una promesa en el momento de la creación de la aplicación a la implementación de que siempre usará combinaciones específicas de objetos shader.
  • Las canalizaciones siempre deben estar vinculadas antes de su uso, mientras que la vinculación de objetos shader es opcional.
  • Las canalizaciones permiten que las implementaciones requieran que se proporcione algún estado de forma estática en el momento de la compilación, mientras que con los objetos shader, todos los estados siempre se establecen dinámicamente y son independientes de los shaders.
  • Las canalizaciones requieren formatos de datos adjuntos de representación especificados en el momento de la creación de la canalización, mientras que los objetos de sombreado no. Los objetos Shader se pueden usar con cualquier combinación válida de formatos de archivos adjuntos compatibles con el dispositivo.
  • Con canalizaciones, la aplicación puede recuperar y reutilizar el código de sombreado compilado como caché de canalización, pero estos datos no se usan para crear nuevas canalizaciones. Con los objetos shader, el código shader compilado se puede recuperar directamente de cualquier objeto shader y se garantiza que se utilizará para crear un objeto shader equivalente en cualquier dispositivo físico compatible sin necesidad de proporcionar el SPIR-V original.

Khronos asegura que implementar la extensión Vulkan en un proyecto no afectará el desempeño del proyecto. Esto se debe a que los objetos shader están más optimizados que las canalizaciones cuando se trata de afectar al procesador y es insignificante a la hora de afectar negativamente a la GPU. La compañía también señala que «las mejoras en el rendimiento de la CPU a partir de un código de aplicación más simple que utiliza API de objetos de sombreado pueden superar al código de aplicación equivalente rediseñado para usar canalizaciones lo suficiente como para que las mejoras de rendimiento en la aplicación superen el costo de los gastos generales de implementación adicionales».

Se han cumplido los requisitos específicos de rendimiento mediante la incorporación de la implementación VK_EXT_shader_object:

  • Las llamadas de dibujo que usan objetos de sombreado no deben tomar más del 150 % del tiempo de CPU de las llamadas de dibujo que usan canalizaciones de gráficos totalmente estáticas.
  • Las llamadas de dibujo que usan objetos de sombreado no deben tomar más del 120 % del tiempo de CPU de las llamadas de dibujo que usan canalizaciones de gráficos dinámicas al máximo
  • Las llamadas de despacho que usan objetos de sombreado de cómputo no deben ser perceptiblemente más lentas que las llamadas de despacho que usan canalizaciones de cómputo
  • La creación de un objeto shader a partir del código shader binario no debe tomar más del 150 % del tiempo de CPU del costo de copiar una cantidad equivalente de datos en la memoria local del dispositivo.

La compañía anticipa que la nueva extensión de Vulkan comenzará a tener una adopción generalizada, lo que ayudará al crecimiento y permitirá más mejoras y adiciones con el tiempo. NVIDIA tiene una versión beta del nuevo VK_EXT_shader_object en su controlador más reciente en el sitio para desarrolladores de NVIDIA. Khronos también agregó una nueva capa que implementa el soporte en los controladores existentes como la última actualización del repositorio Vulkan-ExtensionLayer, con compilaciones binarias que se envían como una inclusión del SDK de Vulkan cuando se envíe la próxima versión.

Puede encontrar más información sobre la implementación y el soporte en la página de especificaciones de Vulkan.

Fuentes de noticias: blog de desarrolladores de NVIDIA, Khronos Group Github

Comparte esta historia

Facebook

Gorjeo



Source link-29