vkmemory: flush whole size
authorVíctor Manuel Jáquez Leal <vjaquez@igalia.com>
Wed, 29 Mar 2023 10:58:14 +0000 (12:58 +0200)
committerTim-Philipp Müller <tim@centricular.com>
Thu, 30 Mar 2023 18:08:09 +0000 (19:08 +0100)
Running element_vkcolorconver test with Vulkan validation layer this error is
raised:

Code 0 : Validation Error: [ VUID-VkMappedMemoryRange-size-01390 ] Object 0:
handle = 0x100000000010, type = VK_OBJECT_TYPE_DEVICE_MEMORY;
| MessageID = 0xdd4e6d8b
| vkFlushMappedMemoryRanges: Size in pMemRanges[0] is 0x4, which is not a
multiple of VkPhysicalDeviceLimits::nonCoherentAtomSize (0x40) and offset +
size (0x0 + 0x4 = 0x4) not equal to the memory size (0xb). The Vulkan spec
states: If size is not equal to VK_WHOLE_SIZE, size must either be a multiple of
VkPhysicalDeviceLimits::nonCoherentAtomSize, or offset plus size must equal the
size of memory

The reason of is that the image size used in the test doesn't comply hardware
restrictions. In order to avoid juggling with image size and hardware
restrictions, this patch proposes to use VK_WHOLE_SIZE macro.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4311>

subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkmemory.c

index 5bec921..18bd5b3 100644 (file)
@@ -151,7 +151,7 @@ _vk_mem_unmap_full (GstVulkanMemory * mem, GstMapInfo * info)
       /* .pNext = */
       .memory = mem->mem_ptr,
       .offset = mem->vk_offset,
-      .size = mem->mem.size,
+      .size = VK_WHOLE_SIZE,
     };
 
     err = vkFlushMappedMemoryRanges (mem->device->device, 1u, &range);