layers: Add deprecated extension warning to BP
Change-Id: I268ffe40c30a1118e0538e28e6f9c2619e3d6b0a
diff --git a/layers/best_practices.cpp b/layers/best_practices.cpp
index 3b9217c..dd815db 100644
--- a/layers/best_practices.cpp
+++ b/layers/best_practices.cpp
@@ -47,6 +47,13 @@
"vkCreateInstance(): Attempting to enable Device Extension %s at CreateInstance time.",
pCreateInfo->ppEnabledExtensionNames[i]);
}
+
+ if (white_list(pCreateInfo->ppEnabledExtensionNames[i], kDeprecatedExtensionNames)) {
+ skip |= log_msg(report_data, VK_DEBUG_REPORT_WARNING_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0,
+ kVUID_BestPractices_CreateInstance_DeprecatedExtension,
+ "vkCreateInstance(): Attempting to enable Deprecated Extension %s at CreateInstance time.",
+ pCreateInfo->ppEnabledExtensionNames[i]);
+ }
}
return skip;
@@ -78,9 +85,16 @@
for (uint32_t i = 0; i < pCreateInfo->enabledExtensionCount; i++) {
if (white_list(pCreateInfo->ppEnabledExtensionNames[i], kInstanceExtensionNames)) {
- skip |= LogWarning(device, kVUID_BestPractices_CreateInstance_ExtensionMismatch,
- "vkCreateDevice(): Attempting to enable Instance Extension %s at CreateDevice time.",
- pCreateInfo->ppEnabledExtensionNames[i]);
+ skip |= log_msg(report_data, VK_DEBUG_REPORT_WARNING_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0,
+ kVUID_BestPractices_CreateDevice_ExtensionMismatch,
+ "vkCreateDevice(): Attempting to enable Instance Extension %s at CreateDevice time.",
+ pCreateInfo->ppEnabledExtensionNames[i]);
+ }
+ if (white_list(pCreateInfo->ppEnabledExtensionNames[i], kDeprecatedExtensionNames)) {
+ skip |= log_msg(report_data, VK_DEBUG_REPORT_WARNING_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0,
+ kVUID_BestPractices_CreateDevice_DeprecatedExtension,
+ "vkCreateDevice(): Attempting to enable Deprecated Extension %s at CreateDevice time.",
+ pCreateInfo->ppEnabledExtensionNames[i]);
}
}
diff --git a/layers/best_practices.h b/layers/best_practices.h
index f656b5d..4a9b225 100644
--- a/layers/best_practices.h
+++ b/layers/best_practices.h
@@ -25,6 +25,42 @@
static const uint32_t kMemoryObjectWarningLimit = 250;
+static const std::set<std::string> kDeprecatedExtensionNames = {VK_KHR_16BIT_STORAGE_EXTENSION_NAME,
+ VK_KHR_BIND_MEMORY_2_EXTENSION_NAME,
+ VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME,
+ VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME,
+ VK_KHR_DEVICE_GROUP_EXTENSION_NAME,
+ VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME,
+ VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME,
+ VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME,
+ VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME,
+ VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME,
+ VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME,
+ VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME,
+ VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME,
+ VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME,
+ VK_KHR_MAINTENANCE1_EXTENSION_NAME,
+ VK_KHR_MAINTENANCE2_EXTENSION_NAME,
+ VK_KHR_MAINTENANCE3_EXTENSION_NAME,
+ VK_KHR_MULTIVIEW_EXTENSION_NAME,
+ VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME,
+ VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME,
+ VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME,
+ VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME,
+ VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME,
+ VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME,
+ VK_EXT_DEBUG_MARKER_EXTENSION_NAME,
+ VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME,
+ VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME,
+ VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME,
+ VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME,
+ VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME,
+ VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME,
+ VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME,
+ VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME,
+ VK_NV_GLSL_SHADER_EXTENSION_NAME,
+ VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME};
+
class BestPractices : public ValidationStateTracker {
public:
using StateTracker = ValidationStateTracker;
@@ -141,6 +177,5 @@
private:
uint32_t instance_api_version;
-
uint32_t num_mem_objects = 0;
};
diff --git a/layers/best_practices_error_enums.h b/layers/best_practices_error_enums.h
index bf06198..9b0b724 100644
--- a/layers/best_practices_error_enums.h
+++ b/layers/best_practices_error_enums.h
@@ -30,6 +30,12 @@
static const char DECORATE_UNUSED *kVUID_BestPractices_CreateInstance_ExtensionMismatch =
"UNASSIGNED-BestPractices-vkCreateInstance-extension-mismatch";
+static const char DECORATE_UNUSED *kVUID_BestPractices_CreateDevice_ExtensionMismatch =
+ "UNASSIGNED-BestPractices-vkCreateDevice-extension-mismatch";
+static const char DECORATE_UNUSED *kVUID_BestPractices_CreateInstance_DeprecatedExtension =
+ "UNASSIGNED-BestPractices-vkCreateInstance-deprecated-extension";
+static const char DECORATE_UNUSED *kVUID_BestPractices_CreateDevice_DeprecatedExtension =
+ "UNASSIGNED-BestPractices-vkCreateInstance-deprecated-extension";
static const char DECORATE_UNUSED *kVUID_BestPractices_CreateDevice_API_Mismatch =
"UNASSIGNED-BestPractices-vkCreateDevice-API-version-mismatch";
static const char DECORATE_UNUSED *kVUID_BestPractices_SharingModeExclusive =