From 96ecde1d4f867fbeab06e270723ad68b245c97c3 Mon Sep 17 00:00:00 2001 From: Charles Giessen Date: Mon, 19 Jun 2023 23:19:54 -0600 Subject: icd: Add AllocateCommandBuffer test --- tests/icd/mock_icd_tests.cpp | 46 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/tests/icd/mock_icd_tests.cpp b/tests/icd/mock_icd_tests.cpp index 78372134..c2fcbf56 100644 --- a/tests/icd/mock_icd_tests.cpp +++ b/tests/icd/mock_icd_tests.cpp @@ -19,6 +19,7 @@ #include +#include #include #include @@ -29,17 +30,47 @@ #include "binary_locations.h" #if defined(WIN32) -int set_environment_var(const char* name, const char* value) { return SetEnvironmentVariableA(name, cur_value); } +#define WIN32_LEAN_AND_MEAN +#include +int set_environment_var(const char* name, const char* value) { return SetEnvironmentVariable(name, value); } #else int set_environment_var(const char* name, const char* value) { return setenv(name, value, 1); } #endif -TEST(MockICD, Basic) { +void setup_mock_icd_env_vars() { // Necessary to point the loader at the mock driver set_environment_var("VK_DRIVER_FILES", MOCK_ICD_JSON_MANIFEST_PATH); // Prevents layers from being loaded at all set_environment_var("VK_LOADER_LAYERS_DISABLE", "~all~"); +} + +// Create an instance & device +class MockICD : public ::testing::Test { + protected: + void SetUp() override { + setup_mock_icd_env_vars(); + + VkInstanceCreateInfo instance_create_info{}; + VkResult res = vkCreateInstance(&instance_create_info, nullptr, &instance); + ASSERT_EQ(res, VK_SUCCESS); + + uint32_t count = 1; + res = vkEnumeratePhysicalDevices(instance, &count, &physical_device); + ASSERT_EQ(res, VK_SUCCESS); + + VkDeviceCreateInfo device_create_info{}; + res = vkCreateDevice(physical_device, &device_create_info, nullptr, &device); + ASSERT_EQ(res, VK_SUCCESS); + } + // void TearDown() override {} + VkInstance instance{}; + VkPhysicalDevice physical_device{}; + VkDevice device{}; +}; + +TEST_F(MockICD, Basic) { + setup_mock_icd_env_vars(); uint32_t count = 0; VkResult res = vkEnumerateInstanceExtensionProperties(nullptr, &count, nullptr); ASSERT_EQ(res, VK_SUCCESS); @@ -65,3 +96,14 @@ TEST(MockICD, Basic) { res = vkCreateDevice(phys_devs.at(0), &dev_create_info, nullptr, &device); ASSERT_EQ(res, VK_SUCCESS); } + +TEST_F(MockICD, AllocateCommandBuffers) { + VkCommandBufferAllocateInfo command_buffer_allocate_info{}; + command_buffer_allocate_info.commandBufferCount = 5; + std::array command_buffers; + VkResult res = vkAllocateCommandBuffers(device, &command_buffer_allocate_info, command_buffers.data()); + ASSERT_EQ(VK_SUCCESS, res); + for (const auto& command_buffer : command_buffers) { + ASSERT_NE(nullptr, command_buffer); + } +} -- cgit v1.2.3