/* * 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 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * Copyright: * 2016, Danny Robson */ #include "./instance.hpp" using cruft::vk::instance; /////////////////////////////////////////////////////////////////////////////// instance::create_info::create_info () { sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO; pNext = nullptr; flags = 0; pApplicationInfo = nullptr; enabledLayerCount = 0; ppEnabledLayerNames = nullptr; enabledExtensionCount = 0; ppEnabledExtensionNames = nullptr; } //----------------------------------------------------------------------------- instance::instance (const VkInstanceCreateInfo &info): instantiated (&info, nullptr) { ; } /////////////////////////////////////////////////////////////////////////////// std::set instance::extensions (void) const { uint32_t expected = 0; error::try_code (vkEnumerateInstanceExtensionProperties (nullptr, &expected, nullptr)); VkExtensionProperties props[expected]; uint32_t found = expected; error::try_code (vkEnumerateInstanceExtensionProperties (nullptr, &found, props)); std::set ext; for (const auto &i: props) ext.insert (i.extensionName); return ext; }