From 349dc7732217e572db7b9f8ffdb6bc33087e3bc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Wed, 30 Dec 2020 22:57:13 +0100 Subject: [PATCH] Vk: don't use VK_STRUCTURE_TYPE_APPLICATION_INFO for sType in tests. The problem is that, of all structure type enums, this one is 0, and thus doesn't check for accidentally zeroed-out memory. --- src/Magnum/Vk/Test/MemoryTest.cpp | 8 ++++---- src/Magnum/Vk/Test/RenderPassTest.cpp | 24 ++++++++++++------------ 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/Magnum/Vk/Test/MemoryTest.cpp b/src/Magnum/Vk/Test/MemoryTest.cpp index 925fbd9ea..ae3b6bdf9 100644 --- a/src/Magnum/Vk/Test/MemoryTest.cpp +++ b/src/Magnum/Vk/Test/MemoryTest.cpp @@ -77,9 +77,9 @@ MemoryTest::MemoryTest() { void MemoryTest::requirementsConstructNoInit() { MemoryRequirements requirements{NoInit}; - requirements->sType = VK_STRUCTURE_TYPE_APPLICATION_INFO; + requirements->sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2; new(&requirements) MemoryRequirements{NoInit}; - CORRADE_COMPARE(requirements->sType, VK_STRUCTURE_TYPE_APPLICATION_INFO); + CORRADE_COMPARE(requirements->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); CORRADE_VERIFY((std::is_nothrow_constructible::value)); @@ -89,10 +89,10 @@ void MemoryTest::requirementsConstructNoInit() { void MemoryTest::requirementsConstructFromVk() { VkMemoryRequirements2 vkRequirements; - vkRequirements.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO; + vkRequirements.sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2; MemoryRequirements requirements{vkRequirements}; - CORRADE_COMPARE(requirements->sType, VK_STRUCTURE_TYPE_APPLICATION_INFO); + CORRADE_COMPARE(requirements->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); } void MemoryTest::requirementsAlignedSize() { diff --git a/src/Magnum/Vk/Test/RenderPassTest.cpp b/src/Magnum/Vk/Test/RenderPassTest.cpp index 53def1c2f..a47bcf04f 100644 --- a/src/Magnum/Vk/Test/RenderPassTest.cpp +++ b/src/Magnum/Vk/Test/RenderPassTest.cpp @@ -283,9 +283,9 @@ void RenderPassTest::attachmentDescriptionConstructImplicitLoadStoreLayout() { void RenderPassTest::attachmentDescriptionConstructNoInit() { AttachmentDescription description{NoInit}; - description->sType = VK_STRUCTURE_TYPE_APPLICATION_INFO; + description->sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2; new(&description) AttachmentDescription{NoInit}; - CORRADE_COMPARE(description->sType, VK_STRUCTURE_TYPE_APPLICATION_INFO); + CORRADE_COMPARE(description->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); CORRADE_VERIFY((std::is_nothrow_constructible::value)); @@ -354,9 +354,9 @@ void RenderPassTest::attachmentReferenceConstructUnused() { void RenderPassTest::attachmentReferenceConstructNoInit() { AttachmentReference reference{NoInit}; - reference->sType = VK_STRUCTURE_TYPE_APPLICATION_INFO; + reference->sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2; new(&reference) AttachmentReference{NoInit}; - CORRADE_COMPARE(reference->sType, VK_STRUCTURE_TYPE_APPLICATION_INFO); + CORRADE_COMPARE(reference->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); CORRADE_VERIFY((std::is_nothrow_constructible::value)); @@ -402,9 +402,9 @@ void RenderPassTest::subpassDescriptionConstruct() { void RenderPassTest::subpassDescriptionConstructNoInit() { SubpassDescription description{NoInit}; - description->sType = VK_STRUCTURE_TYPE_APPLICATION_INFO; + description->sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2; new(&description) SubpassDescription{NoInit}; - CORRADE_COMPARE(description->sType, VK_STRUCTURE_TYPE_APPLICATION_INFO); + CORRADE_COMPARE(description->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); CORRADE_VERIFY((std::is_nothrow_constructible::value)); @@ -691,9 +691,9 @@ void RenderPassTest::subpassDescriptionRvalue() { void RenderPassTest::subpassDependencyConstructNoInit() { SubpassDependency dependency{NoInit}; - dependency->sType = VK_STRUCTURE_TYPE_APPLICATION_INFO; + dependency->sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2; new(&dependency) SubpassDependency{NoInit}; - CORRADE_COMPARE(dependency->sType, VK_STRUCTURE_TYPE_APPLICATION_INFO); + CORRADE_COMPARE(dependency->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); CORRADE_VERIFY((std::is_nothrow_constructible::value)); @@ -744,9 +744,9 @@ void RenderPassTest::createInfoConstruct() { void RenderPassTest::createInfoConstructNoInit() { RenderPassCreateInfo info{NoInit}; - info->sType = VK_STRUCTURE_TYPE_APPLICATION_INFO; + info->sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2; new(&info) RenderPassCreateInfo{NoInit}; - CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_APPLICATION_INFO); + CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); CORRADE_VERIFY((std::is_nothrow_constructible::value)); @@ -798,7 +798,7 @@ void RenderPassTest::createInfoConstructDependencies() { RenderPassCreateInfo info; /** @todo update once we have a real API */ VkSubpassDependency2 a{}; - a.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO; + a.sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2; VkSubpassDependency2 b{}; b.sType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO; info.setDependencies({ @@ -807,7 +807,7 @@ void RenderPassTest::createInfoConstructDependencies() { }); CORRADE_COMPARE(info->dependencyCount, 2); CORRADE_VERIFY(info->pDependencies); - CORRADE_COMPARE(info->pDependencies[0].sType, VK_STRUCTURE_TYPE_APPLICATION_INFO); + CORRADE_COMPARE(info->pDependencies[0].sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); CORRADE_COMPARE(info->pDependencies[1].sType, VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO); }