Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a1631430 authored by Tarun Saini's avatar Tarun Saini
Browse files

Handle all structures with dynamically sized arrays in vkjson (generated output)

Test: adb shell cmd gpu vkjson
Flag: NONE infeasible
Bug: b/415705512
Change-Id: I4ad251e28fc4adc031822cd7545393256a723c76
parent 1a76f85a
Loading
Loading
Loading
Loading
+23 −2
Original line number Diff line number Diff line
@@ -2253,6 +2253,15 @@ class VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR:
class VkPhysicalDeviceHostImageCopyFeatures:
    hostImageCopy: VkBool32

@dataclass
class VkPhysicalDeviceHostImageCopyProperties:
    copySrcLayoutCount: uint32_t
    pCopySrcLayouts: List[VkImageLayout]
    copyDstLayoutCount: uint32_t
    pCopyDstLayouts: List[VkImageLayout]
    optimalTilingLayoutUUID: uint8_t * VK_UUID_SIZE
    identicalMemoryTypeRequirements: VkBool32

@dataclass
class VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT:
    primitivesGeneratedQuery: VkBool32
@@ -3026,6 +3035,7 @@ VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR = VkPhysicalDeviceShaderTer
VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE = VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT
VkPhysicalDeviceSynchronization2FeaturesKHR = VkPhysicalDeviceSynchronization2Features
VkPhysicalDeviceHostImageCopyFeaturesEXT = VkPhysicalDeviceHostImageCopyFeatures
VkPhysicalDeviceHostImageCopyPropertiesEXT = VkPhysicalDeviceHostImageCopyProperties
VkPhysicalDevicePipelineProtectedAccessFeaturesEXT = VkPhysicalDevicePipelineProtectedAccessFeatures
VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR = VkPhysicalDeviceShaderIntegerDotProductFeatures
VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR = VkPhysicalDeviceShaderIntegerDotProductProperties
@@ -3170,6 +3180,8 @@ ALL_STRUCTS_EXTENDING_FEATURES_OR_PROPERTIES = [
    VkPhysicalDeviceHdrVividFeaturesHUAWEI,
    VkPhysicalDeviceHostImageCopyFeatures,
    VkPhysicalDeviceHostImageCopyFeaturesEXT,
    VkPhysicalDeviceHostImageCopyProperties,
    VkPhysicalDeviceHostImageCopyPropertiesEXT,
    VkPhysicalDeviceHostQueryResetFeatures,
    VkPhysicalDeviceHostQueryResetFeaturesEXT,
    VkPhysicalDeviceIDProperties,
@@ -3528,7 +3540,8 @@ VULKAN_EXTENSIONS_AND_STRUCTS_MAPPING = {"extensions":
    'VK_EXT_global_priority_query': [   {   'VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT': 'VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES'}],
    'VK_EXT_graphics_pipeline_library': [   {   'VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT': 'VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT'},
                                            {   'VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT': 'VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT'}],
    'VK_EXT_host_image_copy': [   {   'VkPhysicalDeviceHostImageCopyFeaturesEXT': 'VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES'}],
    'VK_EXT_host_image_copy': [   {   'VkPhysicalDeviceHostImageCopyFeaturesEXT': 'VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES'},
                                  {   'VkPhysicalDeviceHostImageCopyPropertiesEXT': 'VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES'}],
    'VK_EXT_host_query_reset': [   {   'VkPhysicalDeviceHostQueryResetFeaturesEXT': 'VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES'}],
    'VK_EXT_image_2d_view_of_3d': [   {   'VkPhysicalDeviceImage2DViewOf3DFeaturesEXT': 'VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT'}],
    'VK_EXT_image_compression_control': [   {   'VkPhysicalDeviceImageCompressionControlFeaturesEXT': 'VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT'}],
@@ -3869,7 +3882,8 @@ VULKAN_VERSIONS_AND_STRUCTS_MAPPING = { 'VK_VERSION_1_0': [],
                          {   'VkPhysicalDevicePipelineProtectedAccessFeatures': 'VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES'},
                          {   'VkPhysicalDevicePipelineRobustnessFeatures': 'VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES'},
                          {   'VkPhysicalDevicePipelineRobustnessProperties': 'VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES'},
                          {   'VkPhysicalDeviceHostImageCopyFeatures': 'VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES'}]}
                          {   'VkPhysicalDeviceHostImageCopyFeatures': 'VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES'},
                          {   'VkPhysicalDeviceHostImageCopyProperties': 'VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES'}]}


# --- Extension Independent Structs ---
@@ -3891,6 +3905,7 @@ EXTENSION_INDEPENDENT_STRUCTS = [ 'VkPhysicalDevice16BitStorageFeatures',
    'VkPhysicalDeviceFloatControlsProperties',
    'VkPhysicalDeviceGlobalPriorityQueryFeatures',
    'VkPhysicalDeviceHostImageCopyFeatures',
    'VkPhysicalDeviceHostImageCopyProperties',
    'VkPhysicalDeviceHostQueryResetFeatures',
    'VkPhysicalDeviceIDProperties',
    'VkPhysicalDeviceImageRobustnessFeatures',
@@ -3975,6 +3990,10 @@ LIST_TYPE_FIELD_AND_SIZE_MAPPING = { 'memoryHeaps': 'memoryHeapCount',
    'pLayeredApis': 'layeredApiCount',
    'physicalDevices': 'physicalDeviceCount'}

STRUCT_WITH_DYNAMIC_SIZE_LIST_MAPPING = {   'VkPhysicalDeviceHostImageCopyProperties': {'pCopyDstLayouts', 'pCopySrcLayouts'},
    'VkPhysicalDeviceLayeredApiPropertiesListKHR': {'pLayeredApis'},
    'VkPhysicalDeviceVulkan14Properties': {'pCopyDstLayouts', 'pCopySrcLayouts'}}

# --- STRUCTS USED BY VULKAN_API_1_0 ---
VULKAN_API_1_0_STRUCTS = [
    VkPhysicalDeviceProperties,
@@ -4118,6 +4137,8 @@ STRUCT_EXTENDS_MAPPING = { 'VkPhysicalDevice16BitStorageFeatures': 'VkPhysical
    'VkPhysicalDeviceHdrVividFeaturesHUAWEI': 'VkPhysicalDeviceFeatures2,VkDeviceCreateInfo',
    'VkPhysicalDeviceHostImageCopyFeatures': 'VkPhysicalDeviceFeatures2,VkDeviceCreateInfo',
    'VkPhysicalDeviceHostImageCopyFeaturesEXT': 'VkPhysicalDeviceFeatures2,VkDeviceCreateInfo',
    'VkPhysicalDeviceHostImageCopyProperties': 'VkPhysicalDeviceProperties2',
    'VkPhysicalDeviceHostImageCopyPropertiesEXT': 'VkPhysicalDeviceProperties2',
    'VkPhysicalDeviceHostQueryResetFeatures': 'VkPhysicalDeviceFeatures2,VkDeviceCreateInfo',
    'VkPhysicalDeviceHostQueryResetFeaturesEXT': 'VkPhysicalDeviceFeatures2,VkDeviceCreateInfo',
    'VkPhysicalDeviceIDProperties': 'VkPhysicalDeviceProperties2',
+22 −1
Original line number Diff line number Diff line
@@ -1053,7 +1053,9 @@ inline bool Iterate(Visitor* visitor,
template <typename Visitor>
inline bool Iterate(Visitor* visitor, VkJsonExtHostImageCopy* structs) {
  return visitor->Visit("hostImageCopyFeaturesEXT",
                        &structs->host_image_copy_features_ext);
                        &structs->host_image_copy_features_ext) &&
         visitor->Visit("hostImageCopyPropertiesEXT",
                        &structs->host_image_copy_properties_ext);
}

template <typename Visitor>
@@ -3945,6 +3947,23 @@ inline bool Iterate(Visitor* visitor,
      visitor->Visit("hostImageCopy", &features->hostImageCopy);
}

template <typename Visitor>
inline bool Iterate(Visitor* visitor,
                    VkPhysicalDeviceHostImageCopyProperties* properties) {
  return

      visitor->Visit("copySrcLayoutCount", &properties->copySrcLayoutCount) &&
      visitor->VisitArray("pCopySrcLayouts", properties->copySrcLayoutCount,
                          &properties->pCopySrcLayouts) &&
      visitor->Visit("copyDstLayoutCount", &properties->copyDstLayoutCount) &&
      visitor->VisitArray("pCopyDstLayouts", properties->copyDstLayoutCount,
                          &properties->pCopyDstLayouts) &&
      visitor->Visit("optimalTilingLayoutUUID",
                     &properties->optimalTilingLayoutUUID) &&
      visitor->Visit("identicalMemoryTypeRequirements",
                     &properties->identicalMemoryTypeRequirements);
}

template <typename Visitor>
inline bool Iterate(Visitor* visitor,
                    VkPhysicalDeviceHostQueryResetFeatures* features) {
@@ -7340,6 +7359,8 @@ inline bool Iterate(Visitor* visitor, VkJsonDevice* device) {
                            &device->pipeline_robustness_properties) &&
             visitor->Visit("hostImageCopyFeatures",
                            &device->host_image_copy_features) &&
             visitor->Visit("hostImageCopyProperties",
                            &device->host_image_copy_properties) &&
             visitor->Visit("core14", &device->core14);
      FALLTHROUGH_INTENDED;
    case VK_API_VERSION_1_3:
+11 −0
Original line number Diff line number Diff line
@@ -634,9 +634,14 @@ struct VkJsonExtHostImageCopy {
    reported = false;
    memset(&host_image_copy_features_ext, 0,
           sizeof(VkPhysicalDeviceHostImageCopyFeaturesEXT));
    memset(&host_image_copy_properties_ext, 0,
           sizeof(VkPhysicalDeviceHostImageCopyPropertiesEXT));
  }
  bool reported;
  VkPhysicalDeviceHostImageCopyFeaturesEXT host_image_copy_features_ext;
  VkPhysicalDeviceHostImageCopyPropertiesEXT host_image_copy_properties_ext;
  std::vector<VkImageLayout> copy_src_layouts;
  std::vector<VkImageLayout> copy_dst_layouts;
};

struct VkJsonExtHostQueryReset {
@@ -1706,6 +1711,7 @@ struct VkJsonKHRMaintenance7 {
  VkPhysicalDeviceMaintenance7FeaturesKHR maintenance7_features_khr;
  VkPhysicalDeviceMaintenance7PropertiesKHR maintenance7_properties_khr;
  VkPhysicalDeviceLayeredApiPropertiesListKHR layered_api_properties_list_khr;
  std::vector<VkPhysicalDeviceLayeredApiPropertiesKHR> layered_apis;
};

struct VkJsonKHRMaintenance8 {
@@ -2959,6 +2965,8 @@ struct VkJsonDevice {
           sizeof(VkPhysicalDeviceGlobalPriorityQueryFeatures));
    memset(&host_image_copy_features, 0,
           sizeof(VkPhysicalDeviceHostImageCopyFeatures));
    memset(&host_image_copy_properties, 0,
           sizeof(VkPhysicalDeviceHostImageCopyProperties));
    memset(&host_query_reset_features, 0,
           sizeof(VkPhysicalDeviceHostQueryResetFeatures));
    memset(&id_properties, 0, sizeof(VkPhysicalDeviceIDProperties));
@@ -3348,6 +3356,7 @@ struct VkJsonDevice {
  VkPhysicalDeviceFloatControlsProperties float_controls_properties;
  VkPhysicalDeviceGlobalPriorityQueryFeatures global_priority_query_features;
  VkPhysicalDeviceHostImageCopyFeatures host_image_copy_features;
  VkPhysicalDeviceHostImageCopyProperties host_image_copy_properties;
  VkPhysicalDeviceHostQueryResetFeatures host_query_reset_features;
  VkPhysicalDeviceIDProperties id_properties;
  VkPhysicalDeviceImageRobustnessFeatures image_robustness_features;
@@ -3426,6 +3435,8 @@ struct VkJsonDevice {
  VkPhysicalDeviceProperties properties;
  VkPhysicalDeviceFeatures features;
  VkPhysicalDeviceMemoryProperties memory;
  std::vector<VkImageLayout> copy_src_layouts;
  std::vector<VkImageLayout> copy_dst_layouts;
  std::vector<VkQueueFamilyProperties> queues;
  std::vector<VkExtensionProperties> extensions;
  std::vector<VkLayerProperties> layers;
+70 −0
Original line number Diff line number Diff line
@@ -312,6 +312,16 @@ VkJsonDevice VkJsonGetDevice(VkPhysicalDevice physical_device) {
                            .graphics_pipeline_library_properties_ext;
  }

  if (HasExtension("VK_EXT_host_image_copy", device.extensions)) {
    device.ext_host_image_copy.reported = true;
    device.ext_host_image_copy.host_image_copy_properties_ext.sType =
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES;
    device.ext_host_image_copy.host_image_copy_properties_ext.pNext =
        properties.pNext;
    properties.pNext =
        &device.ext_host_image_copy.host_image_copy_properties_ext;
  }

  if (HasExtension("VK_EXT_inline_uniform_block", device.extensions)) {
    device.ext_inline_uniform_block.reported = true;
    device.ext_inline_uniform_block.inline_uniform_block_properties_ext.sType =
@@ -1065,6 +1075,42 @@ VkJsonDevice VkJsonGetDevice(VkPhysicalDevice physical_device) {
  }

  vkGetPhysicalDeviceProperties2(physical_device, &properties);

  if (device.ext_host_image_copy.host_image_copy_properties_ext
              .copyDstLayoutCount > 0 ||
      device.ext_host_image_copy.host_image_copy_properties_ext
              .copySrcLayoutCount > 0) {
    if (device.ext_host_image_copy.host_image_copy_properties_ext
            .copyDstLayoutCount > 0) {
      device.ext_host_image_copy.copy_dst_layouts.resize(
          device.ext_host_image_copy.host_image_copy_properties_ext
              .copyDstLayoutCount);
      device.ext_host_image_copy.host_image_copy_properties_ext
          .pCopyDstLayouts = device.ext_host_image_copy.copy_dst_layouts.data();
    }

    if (device.ext_host_image_copy.host_image_copy_properties_ext
            .copySrcLayoutCount > 0) {
      device.ext_host_image_copy.copy_src_layouts.resize(
          device.ext_host_image_copy.host_image_copy_properties_ext
              .copySrcLayoutCount);
      device.ext_host_image_copy.host_image_copy_properties_ext
          .pCopySrcLayouts = device.ext_host_image_copy.copy_src_layouts.data();
    }

    vkGetPhysicalDeviceProperties2(physical_device, &properties);
  }

  if (device.khr_maintenance7.layered_api_properties_list_khr.layeredApiCount >
      0) {
    device.khr_maintenance7.layered_apis.resize(
        device.khr_maintenance7.layered_api_properties_list_khr
            .layeredApiCount);
    device.khr_maintenance7.layered_api_properties_list_khr.pLayeredApis =
        device.khr_maintenance7.layered_apis.data();
    vkGetPhysicalDeviceProperties2(physical_device, &properties);
  }

  device.properties = properties.properties;

  VkPhysicalDeviceFeatures2 features = {
@@ -3877,6 +3923,11 @@ VkJsonDevice VkJsonGetDevice(VkPhysicalDevice physical_device) {
    device.pipeline_robustness_properties.pNext = properties.pNext;
    properties.pNext = &device.pipeline_robustness_properties;

    device.host_image_copy_properties.sType =
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES;
    device.host_image_copy_properties.pNext = properties.pNext;
    properties.pNext = &device.host_image_copy_properties;

    device.core14.properties.sType =
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES;
    device.core14.properties.pNext = properties.pNext;
@@ -3884,6 +3935,25 @@ VkJsonDevice VkJsonGetDevice(VkPhysicalDevice physical_device) {

    vkGetPhysicalDeviceProperties2(physical_device, &properties);

    if (device.host_image_copy_properties.copyDstLayoutCount > 0 ||
        device.host_image_copy_properties.copySrcLayoutCount > 0) {
      if (device.host_image_copy_properties.copyDstLayoutCount > 0) {
        device.copy_dst_layouts.resize(
            device.host_image_copy_properties.copyDstLayoutCount);
        device.host_image_copy_properties.pCopyDstLayouts =
            device.copy_dst_layouts.data();
      }

      if (device.host_image_copy_properties.copySrcLayoutCount > 0) {
        device.copy_src_layouts.resize(
            device.host_image_copy_properties.copySrcLayoutCount);
        device.host_image_copy_properties.pCopySrcLayouts =
            device.copy_src_layouts.data();
      }

      vkGetPhysicalDeviceProperties2(physical_device, &properties);
    }

    if (device.core14.properties.copySrcLayoutCount > 0 ||
        device.core14.properties.copyDstLayoutCount > 0) {
      if (device.core14.properties.copySrcLayoutCount > 0) {