From: Alexander Galazin Date: Fri, 11 Aug 2017 17:34:19 +0000 (+0200) Subject: Merge vk-gl-cts/vulkan-cts-1.0.2 into vk-gl-cts/master X-Git-Tag: upstream/0.1.0~152 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=336cf90fd176c3051b41b9631b0e745859883217;hp=0edad9e02c99c719f1d5d0d98343da81335bdaf8;p=platform%2Fupstream%2FVK-GL-CTS.git Merge vk-gl-cts/vulkan-cts-1.0.2 into vk-gl-cts/master Change-Id: I90a5ab2f101b2dcd7372ac8721b944d7bcbb95d0 --- diff --git a/external/vulkancts/modules/vulkan/api/vktApiBufferViewCreateTests.cpp b/external/vulkancts/modules/vulkan/api/vktApiBufferViewCreateTests.cpp index 2b485a6..f4aa048 100644 --- a/external/vulkancts/modules/vulkan/api/vktApiBufferViewCreateTests.cpp +++ b/external/vulkancts/modules/vulkan/api/vktApiBufferViewCreateTests.cpp @@ -82,7 +82,8 @@ public: virtual tcu::TestStatus createTestBuffer (VkDeviceSize size, VkBufferUsageFlags usage, Context& context, - Move& testBuffer) const = 0; + Move& testBuffer, + Move& memory) const = 0; }; class BufferSuballocation : public IBufferAllocator @@ -91,7 +92,8 @@ public: virtual tcu::TestStatus createTestBuffer (VkDeviceSize size, VkBufferUsageFlags usage, Context& context, - Move& testBuffer) const; + Move& testBuffer, + Move& memory) const; }; class BufferDedicatedAllocation : public IBufferAllocator @@ -100,7 +102,8 @@ public: virtual tcu::TestStatus createTestBuffer (VkDeviceSize size, VkBufferUsageFlags usage, Context& context, - Move& testBuffer) const; + Move& testBuffer, + Move& memory) const; }; class BufferViewTestCase : public TestCase @@ -126,7 +129,8 @@ private: tcu::TestStatus BufferSuballocation::createTestBuffer (VkDeviceSize size, VkBufferUsageFlags usage, Context& context, - Move& testBuffer) const + Move& testBuffer, + Move& memory) const { const VkDevice vkDevice = context.getDevice(); const DeviceInterface& vk = context.getDeviceInterface(); @@ -162,7 +166,6 @@ tcu::TestStatus BufferSuballocation::createTestBuffer (VkDeviceSize size, return tcu::TestStatus::fail(errorMsg.str()); } - Move memory; const VkMemoryAllocateInfo memAlloc = { VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO, // VkStructureType sType @@ -189,7 +192,8 @@ tcu::TestStatus BufferSuballocation::createTestBuffer (VkDeviceSize size, tcu::TestStatus BufferDedicatedAllocation::createTestBuffer (VkDeviceSize size, VkBufferUsageFlags usage, Context& context, - Move& testBuffer) const + Move& testBuffer, + Move& memory) const { const std::vector& extensions = context.getDeviceExtensions(); const deBool isSupported = std::find(extensions.begin(), extensions.end(), "VK_KHR_dedicated_allocation") != extensions.end(); @@ -267,7 +271,6 @@ tcu::TestStatus BufferDedicatedAllocation::createTestBuffer (VkDeviceSize //const VkMemoryType memoryType = memoryProperties.memoryTypes[heapTypeIndex]; //const VkMemoryHeap memoryHeap = memoryProperties.memoryHeaps[memoryType.heapIndex]; - Move memory; vk.getBufferMemoryRequirements2KHR(vkDevice, &info, &memReqs); // get the proper size requirement if (size > memReqs.memoryRequirements.size) @@ -319,6 +322,7 @@ tcu::TestStatus BufferViewTestInstance::iterate (void) const DeviceInterface& vk = m_context.getDeviceInterface(); const VkDeviceSize size = 3 * 5 * 7 * 64; Move testBuffer; + Move testBufferMemory; VkFormatProperties properties; m_context.getInstanceInterface().getPhysicalDeviceFormatProperties(m_context.getPhysicalDevice(), m_testCase.format, &properties); @@ -328,11 +332,11 @@ tcu::TestStatus BufferViewTestInstance::iterate (void) // Create buffer if (m_testCase.bufferAllocationKind == ALLOCATION_KIND_DEDICATED) { - BufferDedicatedAllocation().createTestBuffer(size, m_testCase.usage, m_context, testBuffer); + BufferDedicatedAllocation().createTestBuffer(size, m_testCase.usage, m_context, testBuffer, testBufferMemory); } else { - BufferSuballocation().createTestBuffer(size, m_testCase.usage, m_context, testBuffer); + BufferSuballocation().createTestBuffer(size, m_testCase.usage, m_context, testBuffer, testBufferMemory); } { diff --git a/external/vulkancts/modules/vulkan/api/vktApiCopiesAndBlittingTests.cpp b/external/vulkancts/modules/vulkan/api/vktApiCopiesAndBlittingTests.cpp index 881d8c7..6e38fdb 100644 --- a/external/vulkancts/modules/vulkan/api/vktApiCopiesAndBlittingTests.cpp +++ b/external/vulkancts/modules/vulkan/api/vktApiCopiesAndBlittingTests.cpp @@ -389,9 +389,9 @@ void CopiesAndBlittingTestInstance::generateBuffer (tcu::PixelBufferAccess buffe case FILL_MODE_RED: if (tcu::isCombinedDepthStencilType(buffer.getFormat().type)) { - buffer.setPixDepth(redColor[x % 4], x, y, z); + buffer.setPixDepth(redColor[0], x, y, z); if (tcu::hasStencilComponent(buffer.getFormat().order)) - buffer.setPixStencil(255 * (int)redColor[y % 4], x, y, z); + buffer.setPixStencil((int)redColor[3], x, y, z); } else buffer.setPixel(redColor, x, y, z); diff --git a/external/vulkancts/modules/vulkan/api/vktApiImageClearingTests.cpp b/external/vulkancts/modules/vulkan/api/vktApiImageClearingTests.cpp index b167d85..3eeabd2 100644 --- a/external/vulkancts/modules/vulkan/api/vktApiImageClearingTests.cpp +++ b/external/vulkancts/modules/vulkan/api/vktApiImageClearingTests.cpp @@ -151,7 +151,7 @@ deUint32 greatestCommonDivisor (const deUint32 a, const deUint32 b) deUint32 x=a; deUint32 y=b; - while (x%b != 0) + while (x%y != 0) { temp = y; y = x%y; diff --git a/external/vulkancts/modules/vulkan/sparse_resources/vktSparseResourcesBufferSparseBinding.cpp b/external/vulkancts/modules/vulkan/sparse_resources/vktSparseResourcesBufferSparseBinding.cpp index 1a658ed..2202d9a 100644 --- a/external/vulkancts/modules/vulkan/sparse_resources/vktSparseResourcesBufferSparseBinding.cpp +++ b/external/vulkancts/modules/vulkan/sparse_resources/vktSparseResourcesBufferSparseBinding.cpp @@ -150,21 +150,38 @@ tcu::TestStatus BufferSparseBindingInstance::iterate (void) DE_ASSERT((bufferMemRequirement.size % bufferMemRequirement.alignment) == 0); - std::vector deviceMemUniquePtrVec; + Move sparseMemoryAllocation; { std::vector sparseMemoryBinds; const deUint32 numSparseBinds = static_cast(bufferMemRequirement.size / bufferMemRequirement.alignment); - const deUint32 memoryType = findMatchingMemoryType(instance, physicalDevice, bufferMemRequirement, MemoryRequirement::Any); + const deUint32 memoryType = findMatchingMemoryType(instance, physicalDevice, bufferMemRequirement, MemoryRequirement::Any); if (memoryType == NO_MATCH_FOUND) return tcu::TestStatus::fail("No matching memory type found"); - for (deUint32 sparseBindNdx = 0; sparseBindNdx < numSparseBinds; ++sparseBindNdx) { - const VkSparseMemoryBind sparseMemoryBind = makeSparseMemoryBind(deviceInterface, getDevice(), bufferMemRequirement.alignment, memoryType, bufferMemRequirement.alignment * sparseBindNdx); + const VkMemoryAllocateInfo allocateInfo = + { + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + bufferMemRequirement.size, // VkDeviceSize allocationSize; + memoryType, // uint32_t memoryTypeIndex; + }; + + sparseMemoryAllocation = allocateMemory(deviceInterface, getDevice(), &allocateInfo); + } - deviceMemUniquePtrVec.push_back(makeVkSharedPtr(Move(check(sparseMemoryBind.memory), Deleter(deviceInterface, getDevice(), DE_NULL)))); + for (deUint32 sparseBindNdx = 0; sparseBindNdx < numSparseBinds; ++sparseBindNdx) + { + const VkSparseMemoryBind sparseMemoryBind = + { + bufferMemRequirement.alignment * sparseBindNdx, // VkDeviceSize resourceOffset; + bufferMemRequirement.alignment, // VkDeviceSize size; + *sparseMemoryAllocation, // VkDeviceMemory memory; + bufferMemRequirement.alignment * sparseBindNdx, // VkDeviceSize memoryOffset; + (VkSparseMemoryBindFlags)0, // VkSparseMemoryBindFlags flags; + }; sparseMemoryBinds.push_back(sparseMemoryBind); } diff --git a/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmInstructionTests.cpp b/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmInstructionTests.cpp index f612887..a4aa1a0 100644 --- a/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmInstructionTests.cpp +++ b/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmInstructionTests.cpp @@ -417,7 +417,7 @@ tcu::TestCaseGroup* createOpAtomicGroup (tcu::TestContext& testCtx, bool useStor useStorageBuffer ? "opatomic_storage_buffer" : "opatomic", "Test the OpAtomic* opcodes")); de::Random rnd (deStringHash(group->getName())); - const int numElements = 1000000; + const int numElements = 65535; vector cases; const StringTemplate shaderTemplate ( diff --git a/external/vulkancts/modules/vulkan/synchronization/vktSynchronizationCrossInstanceSharingTests.cpp b/external/vulkancts/modules/vulkan/synchronization/vktSynchronizationCrossInstanceSharingTests.cpp index b8cfaf6..b3c8cf9 100644 --- a/external/vulkancts/modules/vulkan/synchronization/vktSynchronizationCrossInstanceSharingTests.cpp +++ b/external/vulkancts/modules/vulkan/synchronization/vktSynchronizationCrossInstanceSharingTests.cpp @@ -432,6 +432,8 @@ de::MovePtr allocateAndBindMemory (const vk::DeviceInterface& if (!dedicated && dedicatedRequirements.requiresDedicatedAllocation) TCU_THROW(NotSupportedError, "Memory requires dedicated allocation"); + + memoryRequirements = requirements.memoryRequirements; } else { @@ -855,7 +857,7 @@ SharingTestInstance::SharingTestInstance (Context& context, , m_physicalDeviceA (getPhysicalDevice(m_vkiA, *m_instanceA, context.getTestContext().getCommandLine())) , m_queueFamiliesA (vk::getPhysicalDeviceQueueFamilyProperties(m_vkiA, m_physicalDeviceA)) , m_queueFamilyIndicesA (getFamilyIndices(m_queueFamiliesA)) - , m_getMemReq2Supported (de::contains(context.getInstanceExtensions().begin(), context.getInstanceExtensions().end(), "VK_KHR_get_memory_requirements2")) + , m_getMemReq2Supported (de::contains(context.getDeviceExtensions().begin(), context.getDeviceExtensions().end(), "VK_KHR_get_memory_requirements2")) , m_deviceA (createDevice(m_vkiA, m_physicalDeviceA, m_config.memoryHandleType, m_config.semaphoreHandleType, m_config.dedicated, m_getMemReq2Supported)) , m_vkdA (m_vkiA, *m_deviceA) @@ -931,6 +933,11 @@ SharingTestInstance::SharingTestInstance (Context& context, if ((externalProperties.externalMemoryProperties.externalMemoryFeatures & vk::VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR) == 0) TCU_THROW(NotSupportedError, "Importing image resource not supported"); + + if (!m_config.dedicated && (externalProperties.externalMemoryProperties.externalMemoryFeatures & vk::VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR) != 0) + { + TCU_THROW(NotSupportedError, "Handle requires dedicated allocation, but test uses suballocated memory"); + } } else { @@ -956,6 +963,11 @@ SharingTestInstance::SharingTestInstance (Context& context, if ((properties.externalMemoryProperties.externalMemoryFeatures & vk::VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR) == 0 || (properties.externalMemoryProperties.externalMemoryFeatures & vk::VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR) == 0) TCU_THROW(NotSupportedError, "Exporting and importing memory type not supported"); + + if (!m_config.dedicated && (properties.externalMemoryProperties.externalMemoryFeatures & vk::VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR) != 0) + { + TCU_THROW(NotSupportedError, "Handle requires dedicated allocation, but test uses suballocated memory"); + } } // Check semaphore support diff --git a/external/vulkancts/modules/vulkan/wsi/vktWsiDisplayTimingTests.cpp b/external/vulkancts/modules/vulkan/wsi/vktWsiDisplayTimingTests.cpp index 8c2c405..3b2a793 100644 --- a/external/vulkancts/modules/vulkan/wsi/vktWsiDisplayTimingTests.cpp +++ b/external/vulkancts/modules/vulkan/wsi/vktWsiDisplayTimingTests.cpp @@ -486,7 +486,7 @@ vk::Move createRenderPass (const vk::DeviceInterface& vkd, vk::VK_ATTACHMENT_LOAD_OP_DONT_CARE, vk::VK_ATTACHMENT_STORE_OP_DONT_CARE, - vk::VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, + vk::VK_IMAGE_LAYOUT_UNDEFINED, vk::VK_IMAGE_LAYOUT_PRESENT_SRC_KHR } }; diff --git a/external/vulkancts/modules/vulkan/wsi/vktWsiIncrementalPresentTests.cpp b/external/vulkancts/modules/vulkan/wsi/vktWsiIncrementalPresentTests.cpp index 2079577..b72a910 100644 --- a/external/vulkancts/modules/vulkan/wsi/vktWsiIncrementalPresentTests.cpp +++ b/external/vulkancts/modules/vulkan/wsi/vktWsiIncrementalPresentTests.cpp @@ -363,6 +363,8 @@ vk::Move createCommandBuffer (const vk::DeviceInterface& vk vk::VkRenderPass renderPass, vk::VkFramebuffer framebuffer, vk::VkPipeline pipeline, + vk::VkImage image, + bool isFirst, size_t imageNextFrame, size_t currentFrame, deUint32 imageWidth, @@ -389,6 +391,31 @@ vk::Move createCommandBuffer (const vk::DeviceInterface& vk VK_CHECK(vkd.beginCommandBuffer(*commandBuffer, &beginInfo)); { + const vk::VkImageSubresourceRange subRange = + { + vk::VK_IMAGE_ASPECT_COLOR_BIT, + 0, + 1, + 0, + 1 + }; + const vk::VkImageMemoryBarrier barrier = + { + vk::VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, + DE_NULL, + vk::VK_ACCESS_TRANSFER_WRITE_BIT, + vk::VK_ACCESS_TRANSFER_READ_BIT | vk::VK_ACCESS_TRANSFER_WRITE_BIT, + isFirst ? vk::VK_IMAGE_LAYOUT_UNDEFINED : vk::VK_IMAGE_LAYOUT_PRESENT_SRC_KHR, + vk::VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, + VK_QUEUE_FAMILY_IGNORED, + VK_QUEUE_FAMILY_IGNORED, + image, + subRange + }; + vkd.cmdPipelineBarrier(*commandBuffer, vk::VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, vk::VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, 0, 0, DE_NULL, 0, DE_NULL, 1, &barrier); + } + + { const vk::VkClearValue clearValue = vk::makeClearValueColorF32(0.25f, 0.50f, 0.75f, 1.00f); const vk::VkRenderPassBeginInfo renderPassBeginInfo = { @@ -901,6 +928,7 @@ private: vk::Move m_swapchain; std::vector m_swapchainImages; std::vector m_imageNextFrames; + std::vector m_isFirst; vk::Move m_renderPass; vk::Move m_pipeline; @@ -1079,6 +1107,7 @@ void IncrementalPresentTestInstance::initSwapchainResources (void) m_swapchainImages = vk::wsi::getSwapchainImages(m_vkd, *m_device, *m_swapchain); m_imageNextFrames.resize(m_swapchainImages.size(), 0); + m_isFirst.resize(m_swapchainImages.size(), true); m_renderPass = createRenderPass(m_vkd, *m_device, imageFormat); m_pipeline = createPipeline(m_vkd, *m_device, *m_renderPass, *m_pipelineLayout, *m_vertexShaderModule, *m_fragmentShaderModule, imageWidth, imageHeight); @@ -1130,6 +1159,7 @@ void IncrementalPresentTestInstance::deinitSwapchainResources (void) m_swapchainImages.clear(); m_imageNextFrames.clear(); + m_isFirst.clear(); m_swapchain = vk::Move(); m_renderPass = vk::Move(); @@ -1165,8 +1195,9 @@ void IncrementalPresentTestInstance::render (void) // Create command buffer { imageNextFrame = m_imageNextFrames[imageIndex]; - m_commandBuffers[m_frameNdx % m_commandBuffers.size()] = createCommandBuffer(m_vkd, *m_device, *m_commandPool, *m_pipelineLayout, *m_renderPass, m_framebuffers[imageIndex], *m_pipeline, imageNextFrame, m_frameNdx, width, height).disown(); + m_commandBuffers[m_frameNdx % m_commandBuffers.size()] = createCommandBuffer(m_vkd, *m_device, *m_commandPool, *m_pipelineLayout, *m_renderPass, m_framebuffers[imageIndex], *m_pipeline, m_swapchainImages[imageIndex], m_isFirst[imageIndex], imageNextFrame, m_frameNdx, width, height).disown(); m_imageNextFrames[imageIndex] = m_frameNdx + 1; + m_isFirst[imageIndex] = false; } // Submit command buffer