We need to allocate memory before we can create a buffer view
authorJeannot Breton <jbreton@nvidia.com>
Mon, 21 Dec 2015 22:42:32 +0000 (16:42 -0600)
committerJeannot Breton <jbreton@nvidia.com>
Mon, 21 Dec 2015 22:42:32 +0000 (16:42 -0600)
external/vulkancts/modules/vulkan/api/vktApiBufferViewCreateTests.cpp
external/vulkancts/modules/vulkan/memory/vktMemoryMappingTests.cpp
external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmComputeShaderCase.cpp
external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmInstructionTests.cpp

index 3c49bd8..f126067 100644 (file)
@@ -161,15 +161,15 @@ tcu::TestStatus BufferViewTestInstance::iterate (void)
                        m_testCase.range,                                                       //      VkDeviceSize            range;
                };
 
-               if (vk.createBufferView(vkDevice, &bufferViewCreateInfo, (const VkAllocationCallbacks*)DE_NULL, &bufferView) != VK_SUCCESS)
-                       return tcu::TestStatus::fail("Buffer View creation failed!");
-
                if (vk.allocateMemory(vkDevice, &memAlloc, (const VkAllocationCallbacks*)DE_NULL, &memory) != VK_SUCCESS)
                        return tcu::TestStatus::fail("Alloc memory failed!");
 
                if (vk.bindBufferMemory(vkDevice, testBuffer, memory, 0) != VK_SUCCESS)
                        return tcu::TestStatus::fail("Bind buffer memory failed!");
 
+               if (vk.createBufferView(vkDevice, &bufferViewCreateInfo, (const VkAllocationCallbacks*)DE_NULL, &bufferView) != VK_SUCCESS)
+                       return tcu::TestStatus::fail("Buffer View creation failed!");
+
                vk.destroyBufferView(vkDevice, bufferView, (const VkAllocationCallbacks*)DE_NULL);
        }
 
index 22e8fa2..a7f7c6f 100644 (file)
@@ -484,7 +484,7 @@ void MemoryObject::randomFlush (const DeviceInterface& vkd, VkDevice device, de:
 
        randomRanges(rng, ranges, rangeCount, *m_memory, m_size);
 
-       VK_CHECK(vkd.flushMappedMemoryRanges(device, (deUint32)ranges.size(), &ranges[0]));
+       VK_CHECK(vkd.flushMappedMemoryRanges(device, (deUint32)ranges.size(), ranges.empty() ? DE_NULL : &ranges[0]));
 }
 
 void MemoryObject::randomInvalidate (const DeviceInterface& vkd, VkDevice device, de::Random& rng)
@@ -494,7 +494,7 @@ void MemoryObject::randomInvalidate (const DeviceInterface& vkd, VkDevice device
 
        randomRanges(rng, ranges, rangeCount, *m_memory, m_size);
 
-       VK_CHECK(vkd.invalidateMappedMemoryRanges(device, (deUint32)ranges.size(), &ranges[0]));
+       VK_CHECK(vkd.invalidateMappedMemoryRanges(device, (deUint32)ranges.size(), ranges.empty() ? DE_NULL : &ranges[0]));
 }
 
 enum
index 8bb83e5..a317fa0 100644 (file)
@@ -186,7 +186,7 @@ Move<VkPipeline> createComputePipeline (const DeviceInterface& vkdi, const VkDev
 
        if (numSpecConstants != 0)
        {
-               entries.reserve(numSpecConstants);
+               entries.resize(numSpecConstants);
 
                for (deUint32 ndx = 0; ndx < numSpecConstants; ++ndx)
                {
index 8db1395..c5263e6 100644 (file)
@@ -4659,7 +4659,7 @@ TestStatus runAndVerifyDefaultPipeline (Context& context, InstanceContext instan
                        vector<VkSpecializationMapEntry>        entries;
                        VkSpecializationInfo                            specInfo;
 
-                       entries.reserve(numSpecConstants);
+                       entries.resize(numSpecConstants);
 
                        // Only support 32-bit integers as spec constants now. And their constant IDs are numbered sequentially starting from 0.
                        for (size_t ndx = 0; ndx < numSpecConstants; ++ndx)