Charles Giessen
I work at LunarG, working on tooling and ecosystem for the Vulkan API
I primarily focus on the Vulkan-Loader but also work on Vulkaninfo and vk-bootstrap
You might remember me from a 2019 lightning talk about Vulkaninfo...
Its a low level, explicit graphics API
Think of OpenGL or DirectX. Same thing, different API
Made by the Khronos Group, who also make OpenGL
Applications - Makes the Vulkan API calls
Layers - optional plugins to the API, intercept function calls to do stuff like validation, recording, debugging, etc
Drivers - The actual graphics driver that executes all the API calls on a real Vulkan "implementation".
Specifically:
struct Interposer {
const void* shim_function;
const void* underlying_function;
};
__attribute__((used)) static Interposer _interpose_opendir
__attribute__((section("__DATA,__interpose"))) =
{VOIDP_CAST(my_opendir), VOIDP_CAST(opendir)};
TEST(CreateInstance, LayerPresent) {
FrameworkEnvironment env{};
const char* layer_name = "TestLayer";
env.add_explicit_layer(
ManifestLayer{}.add_layer(
ManifestLayer::LayerDescription{}
.set_name(layer_name)
.set_lib_path(TEST_LAYER_PATH_EXPORT_VERSION_2)),
"test_layer.json");
InstWrapper inst{env.vulkan_functions};
inst.create_info.add_layer(layer_name);
inst.CheckCreate();
uint32_t layer_count = 0;
ASSERT_EQ(VK_SUCCESS, env.vulkan_functions.
vkEnumerateInstanceLayerProperties(&layer_count, nullptr));
ASSERT_EQ(layer_count, 1);
}