tests: blit_tests handle unmappable images
diff --git a/tests/blit_tests.cpp b/tests/blit_tests.cpp
index 38aba41..d3159f2 100644
--- a/tests/blit_tests.cpp
+++ b/tests/blit_tests.cpp
@@ -751,6 +751,8 @@
size_t data_size = sizeof(mem_req);
VkResult err;
VkMemoryPropertyFlags reqs = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT;
+ VkMemoryAllocInfo mem_info;
+ VkDeviceMemory event_mem;
// typedef struct VkEventCreateInfo_
// {
@@ -764,29 +766,31 @@
err = vkCreateEvent(dev_.obj(), &event_info, &event);
ASSERT_VK_SUCCESS(err);
+ data_size = sizeof(mem_req);
err = vkGetObjectInfo(dev_.obj(), VK_OBJECT_TYPE_EVENT, event, VK_OBJECT_INFO_TYPE_MEMORY_REQUIREMENTS,
- &data_size, &mem_req);
+ &data_size, &mem_req);
ASSERT_VK_SUCCESS(err);
- // VkResult VKAPI vkAllocMemory(
- // VkDevice device,
- // const VkMemoryAllocInfo* pAllocInfo,
- // VkDeviceMemory* pMem);
- VkMemoryAllocInfo mem_info;
- VkDeviceMemory event_mem;
+ if (mem_req.size) {
- ASSERT_NE(0, mem_req.size) << "vkGetObjectInfo (Event): Failed - expect events to require memory";
+ // VkResult VKAPI vkAllocMemory(
+ // VkDevice device,
+ // const VkMemoryAllocInfo* pAllocInfo,
+ // VkDeviceMemory* pMem);
- memset(&mem_info, 0, sizeof(mem_info));
- mem_info.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO;
- mem_info.allocationSize = mem_req.size;
- mem_info.memPriority = VK_MEMORY_PRIORITY_NORMAL;
- mem_info.memProps = VK_MEMORY_PROPERTY_SHAREABLE_BIT;
- err = vkAllocMemory(dev_.obj(), &mem_info, &event_mem);
- ASSERT_VK_SUCCESS(err);
+ ASSERT_NE(0, mem_req.size) << "vkGetObjectInfo (Event): Failed - expect events to require memory";
- err = vkBindObjectMemory(dev_.obj(), VK_OBJECT_TYPE_EVENT, event, event_mem, 0);
- ASSERT_VK_SUCCESS(err);
+ memset(&mem_info, 0, sizeof(mem_info));
+ mem_info.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO;
+ mem_info.allocationSize = mem_req.size;
+ mem_info.memPriority = VK_MEMORY_PRIORITY_NORMAL;
+ mem_info.memProps = VK_MEMORY_PROPERTY_SHAREABLE_BIT;
+ err = vkAllocMemory(dev_.obj(), &mem_info, &event_mem);
+ ASSERT_VK_SUCCESS(err);
+
+ err = vkBindObjectMemory(dev_.obj(), VK_OBJECT_TYPE_EVENT, event, event_mem, 0);
+ ASSERT_VK_SUCCESS(err);
+ }
err = vkResetEvent(dev_.obj(), event);
ASSERT_VK_SUCCESS(err);
@@ -841,15 +845,16 @@
EXPECT_EQ(0x11111111, data[0]);
bufs[2].unmap();
- // All done with event memory, clean up
- err = vkBindObjectMemory(dev_.obj(), VK_OBJECT_TYPE_EVENT, event, VK_NULL_HANDLE, 0);
- ASSERT_VK_SUCCESS(err);
+ if (mem_req.size) {
+ // All done with event memory, clean up
+ err = vkBindObjectMemory(dev_.obj(), VK_OBJECT_TYPE_EVENT, event, VK_NULL_HANDLE, 0);
+ ASSERT_VK_SUCCESS(err);
+ err = vkFreeMemory(dev_.obj(), event_mem);
+ ASSERT_VK_SUCCESS(err);
+ }
err = vkDestroyObject(dev_.obj(), VK_OBJECT_TYPE_EVENT, event);
ASSERT_VK_SUCCESS(err);
-
- err = vkFreeMemory(dev_.obj(), event_mem);
- ASSERT_VK_SUCCESS(err);
}
class VkCmdBlitImageTest : public VkCmdBlitTest {
@@ -948,12 +953,14 @@
{
vk_testing::Buffer buf;
vk_testing::Image img;
- VkMemoryPropertyFlags reqs = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT;
+ VkMemoryPropertyFlags buffer_reqs = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT;
+ VkMemoryPropertyFlags image_reqs =
+ (img_info.tiling == VK_IMAGE_TILING_LINEAR)?VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT:0;
- buf.init(dev_, checker.buffer_size(), reqs);
+ buf.init(dev_, checker.buffer_size(), buffer_reqs);
checker.fill(buf);
- img.init(dev_, img_info, reqs);
+ img.init(dev_, img_info, image_reqs);
cmd_.begin();
vkCmdCopyBufferToImage(cmd_.obj(),
@@ -1015,12 +1022,14 @@
{
vk_testing::Image img;
vk_testing::Buffer buf;
- VkMemoryPropertyFlags reqs = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT;
+ VkMemoryPropertyFlags buffer_reqs = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT;
+ VkMemoryPropertyFlags image_reqs =
+ (img_info.tiling == VK_IMAGE_TILING_LINEAR)?VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT:0;
- img.init(dev_, img_info, reqs);
+ img.init(dev_, img_info, image_reqs);
fill_src(img, checker);
- buf.init(dev_, checker.buffer_size(), reqs);
+ buf.init(dev_, checker.buffer_size(), buffer_reqs);
cmd_.begin();
vkCmdCopyImageToBuffer(cmd_.obj(),
@@ -1106,14 +1115,19 @@
vk_testing::ImageChecker src_checker(src_info, src_regions);
vk_testing::ImageChecker dst_checker(dst_info, dst_regions);
- VkMemoryPropertyFlags reqs = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT;
+ VkMemoryPropertyFlags src_reqs =
+ (src_info.tiling == VK_IMAGE_TILING_LINEAR)?VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT:0;
+ VkMemoryPropertyFlags dst_reqs =
+ (dst_info.tiling == VK_IMAGE_TILING_LINEAR)?VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT:0;
+
+
vk_testing::Image src;
- src.init(dev_, src_info, reqs);
+ src.init(dev_, src_info, src_reqs);
fill_src(src, src_checker);
vk_testing::Image dst;
- dst.init(dev_, dst_info, reqs);
+ dst.init(dev_, dst_info, dst_reqs);
cmd_.begin();
vkCmdCopyImage(cmd_.obj(),
@@ -1242,9 +1256,10 @@
const std::vector<VkImageSubresourceRange> &ranges)
{
vk_testing::Image img;
- VkMemoryPropertyFlags reqs = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT;
+ VkMemoryPropertyFlags image_reqs =
+ (img_info.tiling == VK_IMAGE_TILING_LINEAR)?VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT:0;
- img.init(dev_, img_info, reqs);
+ img.init(dev_, img_info, image_reqs);
const VkFlags all_cache_outputs =
VK_MEMORY_OUTPUT_HOST_WRITE_BIT |
VK_MEMORY_OUTPUT_SHADER_WRITE_BIT |
@@ -1460,9 +1475,10 @@
const std::vector<VkImageSubresourceRange> &ranges)
{
vk_testing::Image img;
- VkMemoryPropertyFlags reqs = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT;
+ VkMemoryPropertyFlags image_reqs =
+ (img_info.tiling == VK_IMAGE_TILING_LINEAR)?VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT:0;
- img.init(dev_, img_info, reqs);
+ img.init(dev_, img_info, image_reqs);
const VkFlags all_cache_outputs =
VK_MEMORY_OUTPUT_HOST_WRITE_BIT |
VK_MEMORY_OUTPUT_SHADER_WRITE_BIT |