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
diff --git a/layers/basic.cpp b/layers/basic.cpp
index aec3ea4..d1e7805 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 @@
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 e6f23f9..3dc7fb8 100644
--- a/layers/mem_tracker.cpp
+++ b/layers/mem_tracker.cpp
@@ -254,7 +254,7 @@
// 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 @@
// 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 @@
// 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 5b8c098..69b99f3 100644
--- a/layers/screenshot.cpp
+++ b/layers/screenshot.cpp
@@ -554,3 +554,25 @@
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 a02c71b..f9ae4bc 100644
--- a/loader/CMakeLists.txt
+++ b/loader/CMakeLists.txt
@@ -7,10 +7,6 @@
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 ccb6056..af55e66 100755
--- a/vk-layer-generate.py
+++ b/vk-layer-generate.py
@@ -234,10 +234,6 @@
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 @@
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)