diff options
author | Artem Kharytoniuk <artem@lunarg.com> | 2023-01-16 19:18:44 +0100 |
---|---|---|
committer | artem-lunarg <121836235+artem-lunarg@users.noreply.github.com> | 2023-01-17 12:02:46 +0100 |
commit | d7ac028353705add5a6ee03d51e251ddd563fd4c (patch) | |
tree | 41a42e0cdb0dbf75c62890b7c932903d7990c96c | |
parent | 587e811e9cb31a4d8a8362f9d92ac5512d5cac16 (diff) | |
download | vulkan-validation-layers-d7ac028353705add5a6ee03d51e251ddd563fd4c.tar.gz |
tests: Move best practices positive tests to best_practices.cpp
-rw-r--r-- | tests/CMakeLists.txt | 1 | ||||
-rw-r--r-- | tests/positive/best_practices.cpp | 115 | ||||
-rw-r--r-- | tests/vklayertests_best_practices.cpp | 88 |
3 files changed, 116 insertions, 88 deletions
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 66701fce5..dc051b8f6 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -35,6 +35,7 @@ target_sources(vk_layer_validation_tests PRIVATE ${VVL_SOURCE_DIR}/layers/generated/vk_format_utils.cpp ${VVL_SOURCE_DIR}/layers/generated/vk_safe_struct.cpp positive/android_hardware_buffer.cpp + positive/best_practices.cpp positive/command.cpp positive/descriptors.cpp positive/dynamic_rendering.cpp diff --git a/tests/positive/best_practices.cpp b/tests/positive/best_practices.cpp new file mode 100644 index 000000000..e0c8499da --- /dev/null +++ b/tests/positive/best_practices.cpp @@ -0,0 +1,115 @@ +/* + * Copyright (c) 2015-2023 The Khronos Group Inc. + * Copyright (c) 2015-2023 Valve Corporation + * Copyright (c) 2015-2023 LunarG, Inc. + * Copyright (c) 2015-2023 Google, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Author: Chia-I Wu <olvaffe@gmail.com> + * Author: Chris Forbes <chrisf@ijw.co.nz> + * Author: Courtney Goeltzenleuchter <courtney@LunarG.com> + * Author: Mark Lobodzinski <mark@lunarg.com> + * Author: Mike Stroyan <mike@LunarG.com> + * Author: Tobin Ehlis <tobine@google.com> + * Author: Tony Barbour <tony@LunarG.com> + * Author: Cody Northrop <cnorthrop@google.com> + * Author: Dave Houlton <daveh@lunarg.com> + * Author: Jeremy Kniager <jeremyk@lunarg.com> + * Author: Shannon McPherson <shannon@lunarg.com> + * Author: John Zulauf <jzulauf@lunarg.com> + */ + +#include "../layer_validation_tests.h" + +class VkPositiveBestPracticesLayerTest : public VkBestPracticesLayerTest {}; + +TEST_F(VkPositiveBestPracticesLayerTest, TestDestroyFreeNullHandles) { + VkResult err; + + TEST_DESCRIPTION("Call all applicable destroy and free routines with NULL handles, expecting no validation errors"); + + ASSERT_NO_FATAL_FAILURE(InitBestPracticesFramework()); + ASSERT_NO_FATAL_FAILURE(InitState()); + ASSERT_NO_FATAL_FAILURE(InitViewport()); + ASSERT_NO_FATAL_FAILURE(InitRenderTarget()); + + vk::DestroyBuffer(m_device->device(), VK_NULL_HANDLE, NULL); + vk::DestroyBufferView(m_device->device(), VK_NULL_HANDLE, NULL); + vk::DestroyCommandPool(m_device->device(), VK_NULL_HANDLE, NULL); + vk::DestroyDescriptorPool(m_device->device(), VK_NULL_HANDLE, NULL); + vk::DestroyDescriptorSetLayout(m_device->device(), VK_NULL_HANDLE, NULL); + vk::DestroyDevice(VK_NULL_HANDLE, NULL); + vk::DestroyEvent(m_device->device(), VK_NULL_HANDLE, NULL); + vk::DestroyFence(m_device->device(), VK_NULL_HANDLE, NULL); + vk::DestroyFramebuffer(m_device->device(), VK_NULL_HANDLE, NULL); + vk::DestroyImage(m_device->device(), VK_NULL_HANDLE, NULL); + vk::DestroyImageView(m_device->device(), VK_NULL_HANDLE, NULL); + vk::DestroyInstance(VK_NULL_HANDLE, NULL); + vk::DestroyPipeline(m_device->device(), VK_NULL_HANDLE, NULL); + vk::DestroyPipelineCache(m_device->device(), VK_NULL_HANDLE, NULL); + vk::DestroyPipelineLayout(m_device->device(), VK_NULL_HANDLE, NULL); + vk::DestroyQueryPool(m_device->device(), VK_NULL_HANDLE, NULL); + vk::DestroyRenderPass(m_device->device(), VK_NULL_HANDLE, NULL); + vk::DestroySampler(m_device->device(), VK_NULL_HANDLE, NULL); + vk::DestroySemaphore(m_device->device(), VK_NULL_HANDLE, NULL); + vk::DestroyShaderModule(m_device->device(), VK_NULL_HANDLE, NULL); + + VkCommandPool command_pool; + VkCommandPoolCreateInfo pool_create_info{}; + pool_create_info.sType = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO; + pool_create_info.queueFamilyIndex = m_device->graphics_queue_node_index_; + pool_create_info.flags = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT; + vk::CreateCommandPool(m_device->device(), &pool_create_info, nullptr, &command_pool); + VkCommandBuffer command_buffers[3] = {}; + VkCommandBufferAllocateInfo command_buffer_allocate_info{}; + command_buffer_allocate_info.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO; + command_buffer_allocate_info.commandPool = command_pool; + command_buffer_allocate_info.commandBufferCount = 1; + command_buffer_allocate_info.level = VK_COMMAND_BUFFER_LEVEL_PRIMARY; + vk::AllocateCommandBuffers(m_device->device(), &command_buffer_allocate_info, &command_buffers[1]); + vk::FreeCommandBuffers(m_device->device(), command_pool, 3, command_buffers); + vk::DestroyCommandPool(m_device->device(), command_pool, NULL); + + VkDescriptorPoolSize ds_type_count = {}; + ds_type_count.type = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC; + ds_type_count.descriptorCount = 1; + + VkDescriptorPoolCreateInfo ds_pool_ci = {}; + ds_pool_ci.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO; + ds_pool_ci.pNext = NULL; + ds_pool_ci.maxSets = 1; + ds_pool_ci.poolSizeCount = 1; + ds_pool_ci.flags = VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT; + ds_pool_ci.pPoolSizes = &ds_type_count; + + VkDescriptorPool ds_pool; + err = vk::CreateDescriptorPool(m_device->device(), &ds_pool_ci, NULL, &ds_pool); + ASSERT_VK_SUCCESS(err); + + VkDescriptorSetLayoutBinding dsl_binding = {}; + dsl_binding.binding = 2; + dsl_binding.descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC; + dsl_binding.descriptorCount = 1; + dsl_binding.stageFlags = VK_SHADER_STAGE_FRAGMENT_BIT; + dsl_binding.pImmutableSamplers = NULL; + + const VkDescriptorSetLayoutObj ds_layout(m_device, {dsl_binding}); + + VkDescriptorSet descriptor_sets[3] = {}; + VkDescriptorSetAllocateInfo alloc_info = {}; + alloc_info.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO; + alloc_info.descriptorSetCount = 1; + alloc_info.descriptorPool = ds_pool; + alloc_info.pSetLayouts = &ds_layout.handle(); + err = vk::AllocateDescriptorSets(m_device->device(), &alloc_info, &descriptor_sets[1]); + ASSERT_VK_SUCCESS(err); + vk::FreeDescriptorSets(m_device->device(), ds_pool, 3, descriptor_sets); + vk::DestroyDescriptorPool(m_device->device(), ds_pool, NULL); + + vk::FreeMemory(m_device->device(), VK_NULL_HANDLE, NULL); +} diff --git a/tests/vklayertests_best_practices.cpp b/tests/vklayertests_best_practices.cpp index a574699cf..7c5c8affe 100644 --- a/tests/vklayertests_best_practices.cpp +++ b/tests/vklayertests_best_practices.cpp @@ -465,94 +465,6 @@ TEST_F(VkBestPracticesLayerTest, VtxBufferBadIndex) { m_commandBuffer->end(); } -// This is a positive test. No failures are expected. -TEST_F(VkBestPracticesLayerTest, TestDestroyFreeNullHandles) { - VkResult err; - - TEST_DESCRIPTION("Call all applicable destroy and free routines with NULL handles, expecting no validation errors"); - - InitBestPracticesFramework(); - InitState(); - - ASSERT_NO_FATAL_FAILURE(InitViewport()); - ASSERT_NO_FATAL_FAILURE(InitRenderTarget()); - - vk::DestroyBuffer(m_device->device(), VK_NULL_HANDLE, NULL); - vk::DestroyBufferView(m_device->device(), VK_NULL_HANDLE, NULL); - vk::DestroyCommandPool(m_device->device(), VK_NULL_HANDLE, NULL); - vk::DestroyDescriptorPool(m_device->device(), VK_NULL_HANDLE, NULL); - vk::DestroyDescriptorSetLayout(m_device->device(), VK_NULL_HANDLE, NULL); - vk::DestroyDevice(VK_NULL_HANDLE, NULL); - vk::DestroyEvent(m_device->device(), VK_NULL_HANDLE, NULL); - vk::DestroyFence(m_device->device(), VK_NULL_HANDLE, NULL); - vk::DestroyFramebuffer(m_device->device(), VK_NULL_HANDLE, NULL); - vk::DestroyImage(m_device->device(), VK_NULL_HANDLE, NULL); - vk::DestroyImageView(m_device->device(), VK_NULL_HANDLE, NULL); - vk::DestroyInstance(VK_NULL_HANDLE, NULL); - vk::DestroyPipeline(m_device->device(), VK_NULL_HANDLE, NULL); - vk::DestroyPipelineCache(m_device->device(), VK_NULL_HANDLE, NULL); - vk::DestroyPipelineLayout(m_device->device(), VK_NULL_HANDLE, NULL); - vk::DestroyQueryPool(m_device->device(), VK_NULL_HANDLE, NULL); - vk::DestroyRenderPass(m_device->device(), VK_NULL_HANDLE, NULL); - vk::DestroySampler(m_device->device(), VK_NULL_HANDLE, NULL); - vk::DestroySemaphore(m_device->device(), VK_NULL_HANDLE, NULL); - vk::DestroyShaderModule(m_device->device(), VK_NULL_HANDLE, NULL); - - VkCommandPool command_pool; - VkCommandPoolCreateInfo pool_create_info{}; - pool_create_info.sType = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO; - pool_create_info.queueFamilyIndex = m_device->graphics_queue_node_index_; - pool_create_info.flags = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT; - vk::CreateCommandPool(m_device->device(), &pool_create_info, nullptr, &command_pool); - VkCommandBuffer command_buffers[3] = {}; - VkCommandBufferAllocateInfo command_buffer_allocate_info{}; - command_buffer_allocate_info.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO; - command_buffer_allocate_info.commandPool = command_pool; - command_buffer_allocate_info.commandBufferCount = 1; - command_buffer_allocate_info.level = VK_COMMAND_BUFFER_LEVEL_PRIMARY; - vk::AllocateCommandBuffers(m_device->device(), &command_buffer_allocate_info, &command_buffers[1]); - vk::FreeCommandBuffers(m_device->device(), command_pool, 3, command_buffers); - vk::DestroyCommandPool(m_device->device(), command_pool, NULL); - - VkDescriptorPoolSize ds_type_count = {}; - ds_type_count.type = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC; - ds_type_count.descriptorCount = 1; - - VkDescriptorPoolCreateInfo ds_pool_ci = {}; - ds_pool_ci.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO; - ds_pool_ci.pNext = NULL; - ds_pool_ci.maxSets = 1; - ds_pool_ci.poolSizeCount = 1; - ds_pool_ci.flags = VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT; - ds_pool_ci.pPoolSizes = &ds_type_count; - - VkDescriptorPool ds_pool; - err = vk::CreateDescriptorPool(m_device->device(), &ds_pool_ci, NULL, &ds_pool); - ASSERT_VK_SUCCESS(err); - - VkDescriptorSetLayoutBinding dsl_binding = {}; - dsl_binding.binding = 2; - dsl_binding.descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC; - dsl_binding.descriptorCount = 1; - dsl_binding.stageFlags = VK_SHADER_STAGE_FRAGMENT_BIT; - dsl_binding.pImmutableSamplers = NULL; - - const VkDescriptorSetLayoutObj ds_layout(m_device, {dsl_binding}); - - VkDescriptorSet descriptor_sets[3] = {}; - VkDescriptorSetAllocateInfo alloc_info = {}; - alloc_info.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO; - alloc_info.descriptorSetCount = 1; - alloc_info.descriptorPool = ds_pool; - alloc_info.pSetLayouts = &ds_layout.handle(); - err = vk::AllocateDescriptorSets(m_device->device(), &alloc_info, &descriptor_sets[1]); - ASSERT_VK_SUCCESS(err); - vk::FreeDescriptorSets(m_device->device(), ds_pool, 3, descriptor_sets); - vk::DestroyDescriptorPool(m_device->device(), ds_pool, NULL); - - vk::FreeMemory(m_device->device(), VK_NULL_HANDLE, NULL); -} - TEST_F(VkBestPracticesLayerTest, CommandBufferReset) { TEST_DESCRIPTION("Test for validating usage of vkCreateCommandPool with COMMAND_BUFFER_RESET_BIT"); |