Comparación de Vulkan y OpenGL: la nueva arquitectura de renderizado de Vulkan

OpenGL es un motor de renderizado de imágenes multiplataforma lanzado por Khronos Group. Esta es una organización de divulgación científica de Khronos, cofundada por Intel, Nvidia y otras empresas, dedicada a crear API de aplicaciones de estándar abierto. Los famosos OpenGL, OpenGL ES, WebGL y Vulkan provienen de Khronos. Y vulkan se llama "la próxima versión de OpenGL", cuyo objetivo es proporcionar una sobrecarga de CPU más baja y más control de GPU. Android API 24 y versiones posteriores son compatibles con vulkan, e iOS también introdujo la representación de imágenes de Metal en WWDC2014. Este artículo se centra en la nueva arquitectura de renderizado de Vulkan.

Tabla de contenido

1. Arquitectura de renderizado OpenGL y Vulkan

1. Arquitectura de renderizado OpenGL

2. Arquitectura de renderizado Vulkan

3. Interoperabilidad entre OpenGL y Vulkan

二、Vulkan Components

三、Conducción de gráficos

四、Memoria y objetos

1, memoria

2、Objetos

5. Sombreadores

1. Estructura SPIR-V

2. Conversión GLSL SPIR-V

六、Imagen y vista de imagen

七、Búfer y búfer de comandos

1, tampón

2, Búfer de comandos

八、Sincronización y conjunto de descriptores

1, sincronización

2, conjunto de descriptores

9. Gestión de recursos

十、Seguridad de subprocesos y subprocesos múltiples

1, hilo múltiple

2, seguridad de hilo


1. Arquitectura de renderizado OpenGL y Vulkan

1. Arquitectura de renderizado OpenGL

La arquitectura OpenGL se divide en tres capas: capa de aplicación, capa de controlador y capa de GPU. Los comandos de OpenGL se procesan desde la capa de aplicación a través de la capa de controlador y luego a la capa de GPU; los recursos de OpenGL se procesan desde la capa de aplicación a través de la capa de controlador (administrado por la máquina de estado de la canalización de imágenes) y luego a la memoria de la GPU capa. La arquitectura específica de OpenGL se muestra en la siguiente figura:

2. Arquitectura de renderizado Vulkan

La arquitectura Vulkan también se divide en tres capas: capa de aplicación, capa de controlador y capa de GPU. Command-Buffer se procesa desde la capa de la aplicación a través de la capa del controlador y luego a la capa de la GPU. Los recursos de Vulkan también son memoria desde la capa de la aplicación a través de la capa del controlador (administrada por el administrador de memoria) y luego a la capa de la GPU. La arquitectura específica de Vulkan se muestra en la siguiente figura:

3. Interoperabilidad entre OpenGL y Vulkan

La interoperación entre OpenGL y Vulkan incluye los siguientes pasos, como se muestra en la siguiente figura:

  • WSI alternativo;
  • Crear un contexto OpenGL y operaciones generales;
  • Cree un dispositivo Vulkan;
  • Representación cíclica entre OpenGL y Vulkan;
  • Representación mixta de OpenGL y Vulkan;

二、Vulkan Components

Los componentes de Vulkan incluyen: memoria, imagen, ImageView, FrameBuffer, Sampler, canalización de gráficos, conjunto de descriptores, búfer de comandos, dispositivo, etc. La relación entre cada componente se muestra en la siguiente figura:

De Image a ImageView, luego a FrameBuffer y finalmente a Render-Pass. Entre ellos, FrameBuffer es más simple que OpenGL y no necesita definir roles para recursos Render-Pass realmente define roles para FrameBuffer y puede tener múltiples Sub-Pass. El diagrama específico es el siguiente:

三、Conducción de gráficos

La tubería de imagen tiene las siguientes características, como se muestra en la siguiente figura:

  • describir todos los estados, incluidos los sombreadores;
  • precompilado;
  • Completado en el momento de la inicialización;
  • Evite la validación excesiva durante el renderizado;
  • Ciertos estados de representación pueden excluirse de él, convirtiéndose en estados dinámicos;

Además, la tubería de gráficos debe ser coherente con los sombreadores, sin introspección. Como se muestra abajo:

四、Memoria y objetos

1, memoria

La memoria proviene de la memoria del montón Heap. La memoria se divide en dos formas: Video y System, donde Video se compone de rgb o rgba, y System se compone principalmente de matriz. La memoria se puede convertir en imagen. El diagrama de relación de memoria es el siguiente:

2、Objetos

El objeto Objetos incluye las siguientes características, como se muestra en la siguiente figura:

  • Los objetos de Vulkan que hacen referencia a los búferes de datos necesitan vincular la memoria;
  • Los dispositivos Vulkan exponen diferentes montones de memoria;
  • Estos montones tienen diferentes tipos de memoria;

5. Sombreadores

1. Estructura SPIR-V

El nombre completo de SPIR-V es Representación intermedia portátil estándar - V, que es un lenguaje intermedio estandarizado para la computación general de GPU. Su estructura de módulos incluye: rotar, iluminación, vtx_main, frag_wood, frag_pastic, frag_metal, etc. Tiene las siguientes características, como se muestra en la siguiente figura:

  • Múltiples puntos de entrada: se pueden definir en un solo módulo de sombreado SPIR-V;
  • Evite la duplicación de código: el módulo de sombreado utiliza múltiples canalizaciones de imágenes;
  • Permite compartir fragmentos de código;
  • Compartir más fácilmente el código de sombreado común;

2. Vulkan lee GLSL

El sombreador tiene las siguientes características:

  • Vulkan usa SPIR-V para pasar directamente a la capa del controlador;
  • NVIDIA permite la compilación directa de GLSL;

El proceso de lectura de GLSL de Vulkan se muestra en la siguiente figura. GLSL se puede leer directamente a través de VK_NV_glsl_shader, o se puede leer a través de glslang y luego se convierte a SPIR-V, y finalmente llega a Vulkan.

六、Imagen y vista de imagen

Image e ImageView tienen las siguientes características, como se muestra en la siguiente figura:

  • La imagen representa todos los tipos de matrices de píxeles;
  •     textura: plantilla de color o profundidad;
  •     Destino de renderizado: plantilla de color o profundidad;
  • Cuando ImageView requiere un formato específico, las imágenes deben exponerse correctamente;
  •     para que lo use el sombreador;
  •     Para uso de framebuffer;

七、Búfer y búfer de comandos

1, tampón

El tampón tiene las siguientes características, como se muestra en la siguiente figura:

  • Se utiliza en diferentes escenarios, incluidos: caché de índice/vértice, caché unificada;
  • Los objetos Vulkan deben estar vinculados a la memoria del dispositivo, la CPU puede acceder a ellos y almacenarlos en caché, y la GPU puede acceder a ellos;

2, Búfer de comandos

El búfer de comandos tiene las siguientes características, como se muestra en la siguiente figura:

  • Vulkan puede representar datos de búfer de comando;
  • En la mayoría de los casos, la GPU se obtiene en forma de FIFO;
  • Se puede crear para una o más subtareas;
  • no puede crear trabajos de gráficos desde la GPU;
  • Admite subprocesos múltiples;
  • El Cmd-buffer principal puede llamar al Cmd-buffer secundario;

八、Sincronización y conjunto de descriptores

1, sincronización

Hay tres métodos de sincronización, como se muestra en la siguiente figura:

  • cantidad de señal;
  • eventos y barreras;
  • cerca;

2, conjunto de descriptores

El conjunto de descripción tiene las siguientes características, como se muestra en la siguiente figura:

  • Cada conjunto de descripción contiene referencias a recursos;
  • El diseño del conjunto de descripción define cómo se colocan los recursos en los conjuntos de descripción;
  • Los búferes de comandos pueden vincularlos de manera eficiente;
  • Deben coincidir con cada etapa que espera el sombreador;

9. Gestión de recursos

十、Seguridad de subprocesos y subprocesos múltiples

1, hilo múltiple

Vulkan admite la representación de subprocesos múltiples y cada subproceso se almacena en caché mediante un grupo de comandos local, como se muestra en la siguiente figura:

2, seguridad de hilo

El grupo de caché de comandos es seguro para subprocesos y proporciona vallas para el aislamiento.Las características específicas son las siguientes, como se muestra en la siguiente figura:

  • Un búfer de comandos para reescribir no se puede reclamar hasta que ya no se use;
  • No se pueden vaciar todos los fotogramas de la cola;
  • VkFences puede proporcionar una cola de espera cuando el búfer de comandos está listo para reciclarse;

 

referencias:

Sitio web oficial de Vulkan

Khronos GroupOrganización

Sitio web oficial del desarrollador de Nvidia Vulkan

Desarrolladores de Android Sitio web oficial Vulkan

Desarrollador de iOS Sitio web oficial Metal

Supongo que te gusta

Origin blog.csdn.net/u011686167/article/details/122914604
Recomendado
Clasificación