anv/device: Add some asserts to MapMemory
authorJason Ekstrand <jason.ekstrand@intel.com>
Tue, 8 Nov 2016 01:23:44 +0000 (17:23 -0800)
committerJason Ekstrand <jason.ekstrand@intel.com>
Thu, 10 Nov 2016 02:17:41 +0000 (18:17 -0800)
Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
src/intel/vulkan/anv_device.c

index a9aa64656ce66f8acac63cc2b814a913d8cbd29c..abc511c4d24e609ac1a4174f594e0687cb7eff84 100644 (file)
@@ -1283,6 +1283,16 @@ VkResult anv_MapMemory(
    if (size == VK_WHOLE_SIZE)
       size = mem->bo.size - offset;
 
+   /* From the Vulkan spec version 1.0.32 docs for MapMemory:
+    *
+    *  * If size is not equal to VK_WHOLE_SIZE, size must be greater than 0
+    *    assert(size != 0);
+    *  * If size is not equal to VK_WHOLE_SIZE, size must be less than or
+    *    equal to the size of the memory minus offset
+    */
+   assert(size > 0);
+   assert(offset + size <= mem->bo.size);
+
    /* FIXME: Is this supposed to be thread safe? Since vkUnmapMemory() only
     * takes a VkDeviceMemory pointer, it seems like only one map of the memory
     * at a time is valid. We could just mmap up front and return an offset