blob: 084273ca09c98774dd91a4b056b2b10a7024d31c [file] [log] [blame]
// Copyright 2021 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <gtest/gtest.h>
#include <stdlib.h>
#include "spinel_vk_rs.h"
//
//
//
namespace spinel::vk::rs {
//
//
//
TEST(SpinelVkRs, CreateSuccess)
{
spinel_vk_rs_instance_create_info_t const instance_create_info = {
.is_validation = true,
.is_debug_info = true,
};
VkInstance instance;
VkResult const result = spinel_vk_rs_instance_create(&instance_create_info, &instance);
EXPECT_EQ(result, VK_SUCCESS);
spinel_vk_rs_create_info_t const create_info = {
//
// Defaults to selecting the first device
//
.instance = instance,
.vendor_id = 0,
.device_id = 0,
.context_block_pool_size = 8 << 20, // 8 MB
.context_handle_count = 8192, // 8K handles
};
spinel_vk_rs_t * svr = spinel_vk_rs_create(&create_info);
EXPECT_NE(svr, nullptr);
spinel_vk_rs_destroy(svr);
vkDestroyInstance(instance, NULL);
}
//
//
//
TEST(SpinelVkRs, CreateFailure)
{
spinel_vk_rs_instance_create_info_t const instance_create_info = {
.is_validation = true,
.is_debug_info = true,
};
VkInstance instance;
VkResult const result = spinel_vk_rs_instance_create(&instance_create_info, &instance);
EXPECT_EQ(result, VK_SUCCESS);
spinel_vk_rs_create_info_t const create_info = {
.instance = instance,
.vendor_id = UINT32_MAX, // no such vendor
.device_id = UINT32_MAX, // no such device
.context_block_pool_size = 8 << 20, // 8 MB
.context_handle_count = 8192, // 8K handles
};
spinel_vk_rs_t * svr = spinel_vk_rs_create(&create_info);
EXPECT_EQ(svr, nullptr);
vkDestroyInstance(instance, NULL);
}
//
//
//
TEST(SpinelVkRs, GetPropsIncomplete)
{
spinel_vk_rs_instance_create_info_t const instance_create_info = {
.is_validation = true,
.is_debug_info = true,
};
VkInstance instance;
VkResult result = spinel_vk_rs_instance_create(&instance_create_info, &instance);
EXPECT_EQ(result, VK_SUCCESS);
result = spinel_vk_rs_get_physical_device_props(instance, NULL, NULL);
EXPECT_EQ(result, VK_INCOMPLETE);
vkDestroyInstance(instance, NULL);
}
//
//
//
TEST(SpinelVkRs, GetProps)
{
spinel_vk_rs_instance_create_info_t const instance_create_info = {
.is_validation = true,
.is_debug_info = true,
};
VkInstance instance;
VkResult result = spinel_vk_rs_instance_create(&instance_create_info, &instance);
uint32_t props_count;
result = spinel_vk_rs_get_physical_device_props(instance, &props_count, NULL);
EXPECT_EQ(result, VK_SUCCESS);
EXPECT_GT(props_count, 0U);
VkPhysicalDeviceProperties * const props = new VkPhysicalDeviceProperties[props_count];
uint32_t props_count_new;
result = spinel_vk_rs_get_physical_device_props(instance, &props_count_new, NULL);
EXPECT_EQ(result, VK_SUCCESS);
EXPECT_EQ(props_count, props_count_new);
delete[] props;
vkDestroyInstance(instance, NULL);
}
//
//
//
} // namespace spinel::vk::rs
//
//
//