extensions: begin changes for extension support
This patch starts restructuring the various components
(loader, driver, layers, etc.) to support global and
device extensions. Require GetProcAddr to access the
extension functions and related support.
diff --git a/icd/intel/instance.c b/icd/intel/instance.c
index a515e2c..be074a6 100644
--- a/icd/intel/instance.c
+++ b/icd/intel/instance.c
@@ -128,13 +128,13 @@
}
memset(instance, 0, sizeof(*instance));
- intel_handle_init(&instance->handle, VK_DBG_OBJECT_INSTANCE, icd);
+ intel_handle_init(&instance->handle, VK_OBJECT_TYPE_INSTANCE, icd);
instance->icd = icd;
for (i = 0; i < info->extensionCount; i++) {
const enum intel_ext_type ext = intel_gpu_lookup_extension(NULL,
- info->ppEnabledExtensionNames[i]);
+ &info->pEnabledExtensions[i]);
if (ext != INTEL_EXT_INVALID)
instance->exts[ext] = true;
@@ -220,48 +220,23 @@
return (count > 0) ? VK_SUCCESS : VK_ERROR_UNAVAILABLE;
}
-ICD_EXPORT VkResult VKAPI vkDbgRegisterMsgCallback(
- VkInstance instance_,
- VK_DBG_MSG_CALLBACK_FUNCTION pfnMsgCallback,
- void* pUserData)
+ICD_EXPORT VkResult VKAPI vkDbgCreateMsgCallback(
+ VkInstance instance,
+ VkFlags msgFlags,
+ PFN_vkDbgMsgCallback pfnMsgCallback,
+ void* pUserData,
+ VkDbgMsgCallback* pMsgCallback)
{
- struct intel_instance *instance = intel_instance(instance_);
+ struct intel_instance *inst = intel_instance(instance);
- return icd_instance_add_logger(instance->icd, pfnMsgCallback, pUserData);
+ return icd_instance_create_logger(inst->icd, msgFlags, pfnMsgCallback, pUserData, pMsgCallback);
}
-ICD_EXPORT VkResult VKAPI vkDbgUnregisterMsgCallback(
- VkInstance instance_,
- VK_DBG_MSG_CALLBACK_FUNCTION pfnMsgCallback)
+ICD_EXPORT VkResult VKAPI vkDbgDestroyMsgCallback(
+ VkInstance instance,
+ VkDbgMsgCallback msgCallback)
{
- struct intel_instance *instance = intel_instance(instance_);
+ struct intel_instance *inst = intel_instance(instance);
- return icd_instance_remove_logger(instance->icd, pfnMsgCallback);
-}
-
-ICD_EXPORT VkResult VKAPI vkDbgSetGlobalOption(
- VkInstance instance_,
- VK_DBG_GLOBAL_OPTION dbgOption,
- size_t dataSize,
- const void* pData)
-{
- struct intel_instance *instance = intel_instance(instance_);
- VkResult res = VK_SUCCESS;
-
- if (dataSize == 0)
- return VK_ERROR_INVALID_VALUE;
-
- switch (dbgOption) {
- case VK_DBG_OPTION_DEBUG_ECHO_ENABLE:
- case VK_DBG_OPTION_BREAK_ON_ERROR:
- case VK_DBG_OPTION_BREAK_ON_WARNING:
- res = icd_instance_set_bool(instance->icd, dbgOption,
- *((const bool *) pData));
- break;
- default:
- res = VK_ERROR_INVALID_VALUE;
- break;
- }
-
- return res;
+ return icd_instance_destroy_logger(inst->icd, msgCallback);
}