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)
commit2b1dbefc428d63dfa392d4f215b2578d859b22d6
treea5b5bf3a17bf370e5cf07d905f9531d7602e1b25
parent1461c1d55c1a25a66670d067ee037862c4dcd5ea
vkmemory: flush whole size

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