Fix nullpointer dereference at VKJson

Set array values of VkPhysicalDeviceVulkan14Properties.

Contributers- angrak.oh@samsung.com

Test: adb shell cmd gpu vkjson
Flag: NONE infeasible
Bug: b/403413507
Change-Id: I8df894343ec759f00f56d55f21a6ed533a15a460
diff --git a/vulkan/vkjson/vkjson.cc b/vulkan/vkjson/vkjson.cc
index 531a623..517e62d 100644
--- a/vulkan/vkjson/vkjson.cc
+++ b/vulkan/vkjson/vkjson.cc
@@ -36,6 +36,9 @@
 #include <type_traits>
 #include <utility>
 
+/*
+ * This file is autogenerated by vkjson_generator.py. Do not edit directly.
+ */
 namespace {
 
 /*
diff --git a/vulkan/vkjson/vkjson.h b/vulkan/vkjson/vkjson.h
index d74644c..cfba8c5 100644
--- a/vulkan/vkjson/vkjson.h
+++ b/vulkan/vkjson/vkjson.h
@@ -33,6 +33,9 @@
 #undef max
 #endif
 
+/*
+ * This file is autogenerated by vkjson_generator.py. Do not edit directly.
+ */
 struct VkJsonLayer {
   VkLayerProperties properties;
   std::vector<VkExtensionProperties> extensions;
@@ -263,23 +266,41 @@
 };
 
 struct VkJsonCore11 {
+  VkJsonCore11() {
+    memset(&properties, 0, sizeof(VkPhysicalDeviceVulkan11Properties));
+    memset(&features, 0, sizeof(VkPhysicalDeviceVulkan11Features));
+  }
   VkPhysicalDeviceVulkan11Properties properties;
   VkPhysicalDeviceVulkan11Features features;
 };
 
 struct VkJsonCore12 {
+  VkJsonCore12() {
+    memset(&properties, 0, sizeof(VkPhysicalDeviceVulkan12Properties));
+    memset(&features, 0, sizeof(VkPhysicalDeviceVulkan12Features));
+  }
   VkPhysicalDeviceVulkan12Properties properties;
   VkPhysicalDeviceVulkan12Features features;
 };
 
 struct VkJsonCore13 {
+  VkJsonCore13() {
+    memset(&properties, 0, sizeof(VkPhysicalDeviceVulkan13Properties));
+    memset(&features, 0, sizeof(VkPhysicalDeviceVulkan13Features));
+  }
   VkPhysicalDeviceVulkan13Properties properties;
   VkPhysicalDeviceVulkan13Features features;
 };
 
 struct VkJsonCore14 {
+  VkJsonCore14() {
+    memset(&properties, 0, sizeof(VkPhysicalDeviceVulkan14Properties));
+    memset(&features, 0, sizeof(VkPhysicalDeviceVulkan14Features));
+  }
   VkPhysicalDeviceVulkan14Properties properties;
   VkPhysicalDeviceVulkan14Features features;
+  std::vector<VkImageLayout> copy_src_layouts;
+  std::vector<VkImageLayout> copy_dst_layouts;
 };
 
 struct VkJsonDevice {
@@ -306,10 +327,6 @@
            sizeof(VkPhysicalDeviceSamplerYcbcrConversionFeatures));
     memset(&shader_draw_parameter_features, 0,
            sizeof(VkPhysicalDeviceShaderDrawParameterFeatures));
-    memset(&core11, 0, sizeof(VkJsonCore11));
-    memset(&core12, 0, sizeof(VkJsonCore12));
-    memset(&core13, 0, sizeof(VkJsonCore13));
-    memset(&core14, 0, sizeof(VkJsonCore14));
   }
   VkJsonKHRVariablePointers khr_variable_pointers;
   VkJsonKHRShaderFloat16Int8 khr_shader_float16_int8;
diff --git a/vulkan/vkjson/vkjson_instance.cc b/vulkan/vkjson/vkjson_instance.cc
index 22b3204..636c119 100644
--- a/vulkan/vkjson/vkjson_instance.cc
+++ b/vulkan/vkjson/vkjson_instance.cc
@@ -27,6 +27,9 @@
 #include <algorithm>
 #include <utility>
 
+/*
+ * This file is autogenerated by vkjson_generator.py. Do not edit directly.
+ */
 namespace {
 
 bool EnumerateExtensions(const char* layer_name,
@@ -512,6 +515,23 @@
 
     vkGetPhysicalDeviceProperties2(physical_device, &properties);
 
+    if (device.core14.properties.copySrcLayoutCount > 0 ||
+        device.core14.properties.copyDstLayoutCount > 0) {
+      if (device.core14.properties.copySrcLayoutCount > 0) {
+        device.core14.copy_src_layouts.resize(
+            device.core14.properties.copySrcLayoutCount);
+        device.core14.properties.pCopySrcLayouts =
+            device.core14.copy_src_layouts.data();
+      }
+      if (device.core14.properties.copyDstLayoutCount > 0) {
+        device.core14.copy_dst_layouts.resize(
+            device.core14.properties.copyDstLayoutCount);
+        device.core14.properties.pCopyDstLayouts =
+            device.core14.copy_dst_layouts.data();
+      }
+      vkGetPhysicalDeviceProperties2(physical_device, &properties);
+    }
+
     device.core14.features.sType =
         VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_FEATURES;
     device.core14.features.pNext = features.pNext;