From ed008740ee2398e1527abb1cae9da804bfd88441 Mon Sep 17 00:00:00 2001 From: David Pinedo Date: Thu, 9 Jul 2015 16:23:44 -0600 Subject: Layers: They now compile on Windows. Added missing vk funcs to basic and screenshot Changed several funcs in mem_tracker to return void Loader cmake file was generating .def file on linux, removed it Fixed missing entry points in layers generated via python --- layers/basic.cpp | 19 +++++++++++++++++++ layers/mem_tracker.cpp | 6 +++--- layers/screenshot.cpp | 22 ++++++++++++++++++++++ loader/CMakeLists.txt | 4 ---- vk-layer-generate.py | 7 ------- 5 files changed, 44 insertions(+), 14 deletions(-) diff --git a/layers/basic.cpp b/layers/basic.cpp index aec3ea41..d1e78059 100644 --- a/layers/basic.cpp +++ b/layers/basic.cpp @@ -33,6 +33,15 @@ // being used: #include "vk_loader_platform.h" +static const VkLayerProperties globalLayerProps[] = { + { + "Basic", + VK_API_VERSION, // specVersion + VK_MAKE_VERSION(0, 1, 0), // implVersion + "layer: Basic", + } +}; + VK_LAYER_EXPORT VkResult VKAPI vkLayerExtension1(VkDevice device) { @@ -175,3 +184,13 @@ VK_LAYER_EXPORT void * VKAPI vkGetInstanceProcAddr(VkInstance instance, const ch return NULL; return instance_dispatch_table(instance)->GetInstanceProcAddr(instance, pName); } + +VK_LAYER_EXPORT VkResult VKAPI vkGetGlobalExtensionProperties(const char *pLayerName, uint32_t *pCount, VkExtensionProperties* pProperties) +{ + return util_GetExtensionProperties(0, NULL, pCount, pProperties); +} + +VK_LAYER_EXPORT VkResult VKAPI vkGetGlobalLayerProperties(uint32_t *pCount, VkLayerProperties* pProperties) +{ + return util_GetLayerProperties(ARRAY_SIZE(globalLayerProps), globalLayerProps, pCount, pProperties); +} diff --git a/layers/mem_tracker.cpp b/layers/mem_tracker.cpp index e6f23f90..3dc7fb83 100644 --- a/layers/mem_tracker.cpp +++ b/layers/mem_tracker.cpp @@ -254,7 +254,7 @@ static void retire_device_fences( // Verify that (actual & desired) flags != 0 or, // if strict is true, verify that (actual & desired) flags == desired // In case of error, report it via dbg callbacks -static bool32_t validate_usage_flags(void* disp_obj, VkFlags actual, VkFlags desired, +static void validate_usage_flags(void* disp_obj, VkFlags actual, VkFlags desired, bool32_t strict, VkObject obj, VkObjectType obj_type, char const* ty_str, char const* func_name, char const* usage_str) { @@ -272,7 +272,7 @@ static bool32_t validate_usage_flags(void* disp_obj, VkFlags actual, VkFlags des // Helper function to validate usage flags for images // Pulls image info and then sends actual vs. desired usage off to helper above where // an error will be flagged if usage is not correct -static bool32_t validate_image_usage_flags(void* disp_obj, VkImage image, VkFlags desired, bool32_t strict, +static void validate_image_usage_flags(void* disp_obj, VkImage image, VkFlags desired, bool32_t strict, char const* func_name, char const* usage_string) { MT_OBJ_INFO* pInfo = get_object_info(image); @@ -284,7 +284,7 @@ static bool32_t validate_image_usage_flags(void* disp_obj, VkImage image, VkFlag // Helper function to validate usage flags for buffers // Pulls buffer info and then sends actual vs. desired usage off to helper above where // an error will be flagged if usage is not correct -static bool32_t validate_buffer_usage_flags(void* disp_obj, VkBuffer buffer, VkFlags desired, bool32_t strict, +static void validate_buffer_usage_flags(void* disp_obj, VkBuffer buffer, VkFlags desired, bool32_t strict, char const* func_name, char const* usage_string) { MT_OBJ_INFO* pInfo = get_object_info(buffer); diff --git a/layers/screenshot.cpp b/layers/screenshot.cpp index 5b8c0984..69b99f3a 100644 --- a/layers/screenshot.cpp +++ b/layers/screenshot.cpp @@ -554,3 +554,25 @@ VK_LAYER_EXPORT void* VKAPI vkGetDeviceProcAddr( return NULL; return pDisp->GetDeviceProcAddr(dev, funcName); } + + +VK_LAYER_EXPORT void* VKAPI vkGetInstanceProcAddr(VkInstance instance, const char* funcName) +{ + return NULL; +#if 0 + if (instance == VK_NULL_HANDLE) { + return NULL; + } + + /* loader uses this to force layer initialization; instance object is wrapped */ + if (!strcmp("vkGetInstanceProcAddr", funcName)) { + initInstanceTable((const VkBaseLayerObject *) instance); + return (void *) vkGetInstanceProcAddr; + } + + VkLayerInstanceDispatchTable* pTable = instance_dispatch_table(instance); + if (pTable->GetInstanceProcAddr == NULL) + return NULL; + return pTable->GetInstanceProcAddr(instance, funcName); +#endif +} diff --git a/loader/CMakeLists.txt b/loader/CMakeLists.txt index a02c71ba..f9ae4bc0 100644 --- a/loader/CMakeLists.txt +++ b/loader/CMakeLists.txt @@ -7,10 +7,6 @@ if (WIN32) add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/vulkan.${MAJOR}.def COMMAND ${PYTHON_CMD} ${PROJECT_SOURCE_DIR}/loader/vk-loader-generate.py win-def-file vulkan.${MAJOR}.dll all > ${CMAKE_CURRENT_BINARY_DIR}/vulkan.${MAJOR}.def DEPENDS ${PROJECT_SOURCE_DIR}/loader/vk-loader-generate.py ${PROJECT_SOURCE_DIR}/vulkan.py) -else() - add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/vulkan.def - COMMAND ${PYTHON_CMD} ${PROJECT_SOURCE_DIR}/loader/vk-loader-generate.py win-def-file vulkan.dll all > ${CMAKE_CURRENT_BINARY_DIR}/vulkan.def - DEPENDS ${PROJECT_SOURCE_DIR}/loader/vk-loader-generate.py ${PROJECT_SOURCE_DIR}/vulkan.py) endif() # DEBUG enables runtime loader ICD verification diff --git a/vk-layer-generate.py b/vk-layer-generate.py index ccb60568..af55e66d 100755 --- a/vk-layer-generate.py +++ b/vk-layer-generate.py @@ -234,10 +234,6 @@ class Subcommand(object): ggep_body.append('}') return "\n".join(ggep_body) - def _gen_layer_get_physical_device_extension_props(self, layer="Generic"): - gpdep_body = [] - return "\n".join(gpdep_body) - def _gen_layer_get_physical_device_layer_props(self, layer="Generic"): gpdlp_body = [] if layer == 'Generic': @@ -285,9 +281,6 @@ class Subcommand(object): intercept = self._gen_layer_get_global_layer_props(self.layer_name) elif 'GetPhysicalDeviceLayerProperties' == proto.name: intercept = self._gen_layer_get_physical_device_layer_props(self.layer_name) - elif 'GetPhysicalDeviceExtensionProperties' == proto.name: - intercept = self._gen_layer_get_physical_device_extension_props(self.layer_name) - if intercept is not None: funcs.append(intercept) -- cgit v1.2.3