title: Why is Vulkan's VkBool32 implemented as an unsigned int?
body: <p>Looking through Sascha Willem's C++ Vulkan Demos hosted on <a href="https://www.google.ch/url?sa=t&amp;rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=2&amp;cad=rja&amp;uact=8&amp;ved=0ahUKEwi0zpi3xYHLAhUiw3IKHbqHAgIQFggoMAE&amp;url=https%3A%2F%2Fgithub.com%2FSaschaWillems%2FVulkan&amp;usg=AFQjCNEX1kb08Mz8nePZOAi-xJ7KKwiC6A&amp;bvm=bv.114733917,d.bGQ" rel="nofollow noreferrer">GitHub</a>, I noticed that some Functions returned the Datatype <code>VkBool32</code>. </p>
  
  <p>I was curious to why Khronos didn't use a normal bool when I noticed the Line</p>
  
  <p><code>typedef uint32_t VkBool32;</code> </p>
  
  <p>in vulkan.h. The uint32_t is defined as </p>
  
  <p><code>typedef unsigned int uint32_t;</code> </p>
  
  <p>in stdint.h.</p>
  
  <p>My Question is, why does it make Sense to throw away 3 Bytes if a standard Bool would do the Job with just one Byte? My little Recherche showed that there is next to no performance Difference (see <a href="https://stackoverflow.com/questions/5764956/which-is-faster-if-bool-or-ifint">Which is faster : if (bool) or if(int)?</a>), and Khronos themselfes said that they wanted to minimize compatibility issues (in this case old C not having a primitive boolean Type) in Order to Focus on modern Code.</p>
  
  <p>(See Trevett's Quote taken from <a href="http://www.theregister.co.uk/2015/03/03/here_comes_vulkan_the_next_generation_of_the_opengl_graphics_api/" rel="nofollow noreferrer">here</a>)</p>
  
  <blockquote>
    <p>a ground-up redesign, we’re not backwards compatible</p>
  </blockquote>