title: What is the point of VkApplicationInfo?
body: <p>In the new Vulkan API, there is a struct which is needed to create a <code>VkInstance</code>: <code>VkApplicationInfo</code>. Here's the definition:</p>
  
  <pre><code>typedef struct VkApplicationInfo {
      VkStructureType    sType;
      const void*        pNext;
      const char*        pApplicationName;
      uint32_t           applicationVersion;
      const char*        pEngineName;
      uint32_t           engineVersion;
      uint32_t           apiVersion;
  } VkApplicationInfo;
  </code></pre>
  
  <p>I see no use for having to pass in the application name, application version, engine name, or engine version. Maybe the implementation could use the <code>pNext</code> member for whatever or maybe check if the implementation supports the <code>apiVersion</code> specified. Outside of that though, I don't understand why the the other members are specified. The Vulkan specs say that you can even use <code>NULL</code> instead of using an actual <code>VkApplicationInfo</code>, which makes it even MORE useless. Can the info from this struct be retrieved later in the app by using (for example) a <code>vkGetAppInfo(instance)</code> or such? Is there an <a href="https://www.reddit.com/r/pcmasterrace/comments/463gb7/nvidia_has_sabotaged_vulkan/" rel="noreferrer">evil master plan</a> behind this struct? Or is just a bad design? Anyways, I'm curious at to why it exists and why I should use it.</p>