layers: Normalize CreateDevice for GPU param change
GPU Validation needs to change the createinfo parameter.
Change-Id: Ibe5b4bf21143c4969473686d95aba0a5428fcffa
diff --git a/scripts/layer_chassis_generator.py b/scripts/layer_chassis_generator.py
index 690442a..a7f3318 100644
--- a/scripts/layer_chassis_generator.py
+++ b/scripts/layer_chassis_generator.py
@@ -657,6 +657,8 @@
item->device_extensions = device_extensions;
}
+ std::unique_ptr<safe_VkDeviceCreateInfo> modified_create_info(new safe_VkDeviceCreateInfo(pCreateInfo));
+
bool skip = false;
for (auto intercept : instance_interceptor->object_dispatch) {
auto lock = intercept->write_lock();
@@ -665,10 +667,10 @@
}
for (auto intercept : instance_interceptor->object_dispatch) {
auto lock = intercept->write_lock();
- intercept->PreCallRecordCreateDevice(gpu, pCreateInfo, pAllocator, pDevice);
+ intercept->PreCallRecordCreateDevice(gpu, pCreateInfo, pAllocator, pDevice, modified_create_info);
}
- VkResult result = fpCreateDevice(gpu, pCreateInfo, pAllocator, pDevice);
+ VkResult result = fpCreateDevice(gpu, reinterpret_cast<VkDeviceCreateInfo *>(modified_create_info.get()), pAllocator, pDevice);
if (result != VK_SUCCESS) {
return result;
}
@@ -1087,6 +1089,11 @@
virtual void PostCallRecordAllocateDescriptorSets(VkDevice device, const VkDescriptorSetAllocateInfo* pAllocateInfo, VkDescriptorSet* pDescriptorSets, VkResult result, void* ads_state) {
PostCallRecordAllocateDescriptorSets(device, pAllocateInfo, pDescriptorSets, result);
};
+
+ // Modify a parameter to CreateDevice
+ virtual void PreCallRecordCreateDevice(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice, std::unique_ptr<safe_VkDeviceCreateInfo> &modified_create_info) {
+ PreCallRecordCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice);
+ };
"""
inline_custom_source_postamble = """