2016-07-07 4 views
2

Dans la nouvelle API Vulkan, il existe une structure nécessaire pour créer un VkInstance: VkApplicationInfo. Voici la définition:Quel est le but de VkApplicationInfo?

typedef struct VkApplicationInfo { 
    VkStructureType sType; 
    const void*  pNext; 
    const char*  pApplicationName; 
    uint32_t   applicationVersion; 
    const char*  pEngineName; 
    uint32_t   engineVersion; 
    uint32_t   apiVersion; 
} VkApplicationInfo; 

Je ne vois pas l'utilisation d'avoir à passer dans le nom de l'application, la version de l'application, le nom du moteur, ou la version du moteur. Peut-être que l'implémentation pourrait utiliser le membre pNext pour quelque chose ou peut-être vérifier si l'implémentation prend en charge le apiVersion spécifié. En dehors de cela, je ne comprends pas pourquoi les autres membres sont spécifiés. Les spécifications Vulkan disent que vous pouvez même utiliser NULL au lieu d'utiliser un réel VkApplicationInfo, ce qui le rend encore plus inutile. Est-ce que les informations de cette structure peuvent être récupérées plus tard dans l'application en utilisant (par exemple) un vkGetAppInfo(instance) ou un autre? Y a-t-il un evil master plan derrière cette structure? Ou est juste un mauvais design? De toute façon, je suis curieux de savoir pourquoi il existe et pourquoi je devrais l'utiliser.

Répondre

8

De la spécification:

Si non NULL, [pApplicationInfo] aide les implémentations reconnaissent le comportement inhérent aux classes d'applications.

Alors c'est ce que c'est.

Des optimisations spécifiques à l'application vont se produire pour n'importe quel programme suffisamment populaire pour attirer ce genre d'intérêt. C'est inévitable. Donc, Vulkan a deux choix: il peut soit prétendre que l'inévitable n'arrivera pas, ce qui signifie que les IHV le feront quand même, en utilisant diverses heuristiques pour détecter votre application. Ou votre application peut simplement se présenter et couper l'intermédiaire.

Vulkan vous permet de faire ce dernier. Et les moteurs bien élevés feront probablement de même pour le compte de votre programme.

+0

Que sont les IHV? (Quelque chose fournisseurs de matériel, non?) – Jerfov2

+0

De quel type d'optimisations parlez-vous ici? Vous parlez d'optimisations spécifiques au pilote, mais qu'est-ce que cela signifie? – Jerfov2

+0

@TheTromboneWilly: Désolé, mauvais mot. Modifié. –