From be10336228bfabe276ba61adf9d6092971d3bdb7 Mon Sep 17 00:00:00 2001 From: Courtney Goeltzenleuchter Date: Mon, 29 Jun 2015 15:39:26 -0600 Subject: loader: bug 12992: extension and layer support Much of layers and loader updated to work with final extension and layer mechanism. Not everything is working here. --- layers/vk_layer_extension_utils.cpp | 87 +++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 layers/vk_layer_extension_utils.cpp (limited to 'layers/vk_layer_extension_utils.cpp') diff --git a/layers/vk_layer_extension_utils.cpp b/layers/vk_layer_extension_utils.cpp new file mode 100644 index 00000000..71c3cba0 --- /dev/null +++ b/layers/vk_layer_extension_utils.cpp @@ -0,0 +1,87 @@ +/* + * Vulkan + * + * Copyright (C) 2015 LunarG, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * Courtney Goeltzenleuchter + */ + +#include "string.h" +#include "vk_layer_extension_utils.h" + +/* + * This file contains utility functions for layers + */ + +VkResult util_GetExtensionProperties( + const uint32_t count, + const VkExtensionProperties *layer_extensions, + uint32_t* pCount, + VkExtensionProperties* pProperties) +{ + uint32_t copy_size; + + if (pCount == NULL) { + return VK_ERROR_INVALID_POINTER; + } + + if (pProperties == NULL || layer_extensions == NULL) { + *pCount = count; + return VK_SUCCESS; + } + + copy_size = *pCount < count ? *pCount : count; + memcpy(pProperties, layer_extensions, copy_size * sizeof(VkExtensionProperties)); + *pCount = copy_size; + if (copy_size < count) { + return VK_INCOMPLETE; + } + + return VK_SUCCESS; +} + +VkResult util_GetLayerProperties( + const uint32_t count, + const VkLayerProperties *layer_properties, + uint32_t* pCount, + VkLayerProperties* pProperties) +{ + uint32_t copy_size; + + if (pCount == NULL) { + return VK_ERROR_INVALID_POINTER; + } + + if (pProperties == NULL || layer_properties == NULL) { + *pCount = count; + return VK_SUCCESS; + } + + copy_size = *pCount < count ? *pCount : count; + memcpy(pProperties, layer_properties, copy_size * sizeof(VkLayerProperties)); + *pCount = copy_size; + if (copy_size < count) { + return VK_INCOMPLETE; + } + + return VK_SUCCESS; +} -- cgit v1.2.3