anchor.diff:  
   CPU cache control
   ~~~~~~~~~~~~~~~~~
  -
  -[source,c]
  -----
  -typedef struct {
  -    VkStructureType                             sType;
  -    const void*                                 pNext;
  -    VkDeviceMemory                              mem;
  -    VkDeviceSize                                offset;
  -    VkDeviceSize                                size;
  -} VkMappedMemoryRange;
  -
  -VkResult VKAPI vkFlushMappedMemoryRanges(
  -    VkDevice                                    device,
  -    uint32_t                                    memRangeCount,
  -    const VkMappedMemoryRange*                  pMemRanges);
  -
  -VkResult VKAPI vkInvalidateMappedMemoryRanges(
  -    VkDevice                                    device,
  -    uint32_t                                    memRangeCount,
  -    const VkMappedMemoryRange*                  pMemRanges);
  -----
   
    * TODO Semantics discussed at https://cvs.khronos.org/bugzilla/show_bug.cgi?id=13690
    ** Invalidate relevant for HOST_NON_COHERENT_BIT, flushes CPU read caches
  
positive.code: 
  Events
  ~~~~~~
  
  [source,c]
  ----
  typedef VkFlags VkEventCreateFlags;
  
  typedef struct {
      VkStructureType                             sType;
      const void*                                 pNext;
      VkEventCreateFlags                          flags;
  } VkEventCreateInfo;
  
  VkResult VKAPI vkCreateEvent(
      VkDevice                                    device,
      const VkEventCreateInfo*                    pCreateInfo,
      VkEvent*                                    pEvent);
  
  VkResult VKAPI vkGetEventStatus(
      VkDevice                                    device,
      VkEvent                                     event);
  
  VkResult VKAPI vkSetEvent(
      VkDevice                                    device,
      VkEvent                                     event);
  
  VkResult VKAPI vkResetEvent(
      VkDevice                                    device,
      VkEvent                                     event);
  
  void VKAPI vkCmdSetEvent(
      VkCmdBuffer                                 cmdBuffer,
      VkEvent                                     event,
      VkPipelineStageFlags                        stageMask);
  
  void VKAPI vkCmdResetEvent(
      VkCmdBuffer                                 cmdBuffer,
      VkEvent                                     event,
      VkPipelineStageFlags                        stageMask);
  
  void VKAPI vkCmdWaitEvents(
      VkCmdBuffer                                 cmdBuffer,
      uint32_t                                    eventCount,
      const VkEvent*                              pEvents,
      VkPipelineStageFlags                        srcStageMask,
      VkPipelineStageFlags                        destStageMask,
      uint32_t                                    memBarrierCount,
      const void* const*                          ppMemBarriers);
  ----
  
   * All types of work waiting on all types of events
   ** Including signaling from CPU side (vkSetEvent)
  
negative.code: 
   * Creating empty layouts for shaders that don't use any resources
   ** For example: vertex data generated with +gl_VertexID+ only
  
  Multipass
  ---------
  