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;