Loading vulkan/scripts/vkjson_generator.py +25 −5 Original line number Original line Diff line number Diff line Loading @@ -184,12 +184,22 @@ def generate_vk_core_struct_definition(f): vkJson_core_entries.append(f"{struct_name} {version.lower()}") vkJson_core_entries.append(f"{struct_name} {version.lower()}") f.write(f"struct {struct_name} {{\n") f.write(f"struct {struct_name} {{\n") f.write(f" {struct_name}() {{\n") # Start of constructor for item in items: for struct_type, _ in item.items(): field_name = "properties" if "Properties" in struct_type else "features" f.write(f" memset(&{field_name}, 0, sizeof({struct_type}));\n") f.write(" }\n") # End of constructor for item in items: for item in items: for struct_type, _ in item.items(): for struct_type, _ in item.items(): field_name = "properties" if "Properties" in struct_type else "features" field_name = "properties" if "Properties" in struct_type else "features" f.write(f" {struct_type} {field_name};\n") f.write(f" {struct_type} {field_name};\n") if version == "Core14": f.write(f"std::vector<VkImageLayout> copy_src_layouts;\n") f.write(f"std::vector<VkImageLayout> copy_dst_layouts;\n") f.write("};\n\n") f.write("};\n\n") return vkJson_core_entries return vkJson_core_entries Loading @@ -212,11 +222,6 @@ def generate_memset_statements(f): f.write(f"memset(&{variable_name}, 0, sizeof({class_name}));\n") f.write(f"memset(&{variable_name}, 0, sizeof({class_name}));\n") entries.append(f"{class_name} {variable_name}") entries.append(f"{class_name} {variable_name}") # Process vulkan core structs for version in VK.VULKAN_CORES_AND_STRUCTS_MAPPING["versions"]: struct_name = f"VkJson{version}" f.write(f"memset(&{version.lower()}, 0, sizeof({struct_name}));\n") return entries return entries Loading Loading @@ -1757,6 +1762,21 @@ VkJsonDevice VkJsonGetDevice(VkPhysicalDevice physical_device) { if (device.properties.apiVersion >= VK_API_VERSION_1_4) {\n""") if (device.properties.apiVersion >= VK_API_VERSION_1_4) {\n""") f.write(cc_code_properties_14) f.write(cc_code_properties_14) f.write(f"vkGetPhysicalDeviceProperties2(physical_device, &properties);\n\n") f.write(f"vkGetPhysicalDeviceProperties2(physical_device, &properties);\n\n") f.write("""\ 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); } \n""") f.write(cc_code_features_14) f.write(cc_code_features_14) f.write(f"vkGetPhysicalDeviceFeatures2(physical_device, &features);\n\n") f.write(f"vkGetPhysicalDeviceFeatures2(physical_device, &features);\n\n") f.write("""\ f.write("""\ Loading vulkan/vkjson/vkjson.cc +3 −0 Original line number Original line Diff line number Diff line Loading @@ -36,6 +36,9 @@ #include <type_traits> #include <type_traits> #include <utility> #include <utility> /* * This file is autogenerated by vkjson_generator.py. Do not edit directly. */ namespace { namespace { /* /* Loading vulkan/vkjson/vkjson.h +21 −4 Original line number Original line Diff line number Diff line Loading @@ -33,6 +33,9 @@ #undef max #undef max #endif #endif /* * This file is autogenerated by vkjson_generator.py. Do not edit directly. */ struct VkJsonLayer { struct VkJsonLayer { VkLayerProperties properties; VkLayerProperties properties; std::vector<VkExtensionProperties> extensions; std::vector<VkExtensionProperties> extensions; Loading Loading @@ -263,23 +266,41 @@ struct VkJsonKHRDriverProperties { }; }; struct VkJsonCore11 { struct VkJsonCore11 { VkJsonCore11() { memset(&properties, 0, sizeof(VkPhysicalDeviceVulkan11Properties)); memset(&features, 0, sizeof(VkPhysicalDeviceVulkan11Features)); } VkPhysicalDeviceVulkan11Properties properties; VkPhysicalDeviceVulkan11Properties properties; VkPhysicalDeviceVulkan11Features features; VkPhysicalDeviceVulkan11Features features; }; }; struct VkJsonCore12 { struct VkJsonCore12 { VkJsonCore12() { memset(&properties, 0, sizeof(VkPhysicalDeviceVulkan12Properties)); memset(&features, 0, sizeof(VkPhysicalDeviceVulkan12Features)); } VkPhysicalDeviceVulkan12Properties properties; VkPhysicalDeviceVulkan12Properties properties; VkPhysicalDeviceVulkan12Features features; VkPhysicalDeviceVulkan12Features features; }; }; struct VkJsonCore13 { struct VkJsonCore13 { VkJsonCore13() { memset(&properties, 0, sizeof(VkPhysicalDeviceVulkan13Properties)); memset(&features, 0, sizeof(VkPhysicalDeviceVulkan13Features)); } VkPhysicalDeviceVulkan13Properties properties; VkPhysicalDeviceVulkan13Properties properties; VkPhysicalDeviceVulkan13Features features; VkPhysicalDeviceVulkan13Features features; }; }; struct VkJsonCore14 { struct VkJsonCore14 { VkJsonCore14() { memset(&properties, 0, sizeof(VkPhysicalDeviceVulkan14Properties)); memset(&features, 0, sizeof(VkPhysicalDeviceVulkan14Features)); } VkPhysicalDeviceVulkan14Properties properties; VkPhysicalDeviceVulkan14Properties properties; VkPhysicalDeviceVulkan14Features features; VkPhysicalDeviceVulkan14Features features; std::vector<VkImageLayout> copy_src_layouts; std::vector<VkImageLayout> copy_dst_layouts; }; }; struct VkJsonDevice { struct VkJsonDevice { Loading @@ -306,10 +327,6 @@ struct VkJsonDevice { sizeof(VkPhysicalDeviceSamplerYcbcrConversionFeatures)); sizeof(VkPhysicalDeviceSamplerYcbcrConversionFeatures)); memset(&shader_draw_parameter_features, 0, memset(&shader_draw_parameter_features, 0, sizeof(VkPhysicalDeviceShaderDrawParameterFeatures)); 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; VkJsonKHRVariablePointers khr_variable_pointers; VkJsonKHRShaderFloat16Int8 khr_shader_float16_int8; VkJsonKHRShaderFloat16Int8 khr_shader_float16_int8; Loading vulkan/vkjson/vkjson_instance.cc +20 −0 Original line number Original line Diff line number Diff line Loading @@ -27,6 +27,9 @@ #include <algorithm> #include <algorithm> #include <utility> #include <utility> /* * This file is autogenerated by vkjson_generator.py. Do not edit directly. */ namespace { namespace { bool EnumerateExtensions(const char* layer_name, bool EnumerateExtensions(const char* layer_name, Loading Loading @@ -512,6 +515,23 @@ VkJsonDevice VkJsonGetDevice(VkPhysicalDevice physical_device) { vkGetPhysicalDeviceProperties2(physical_device, &properties); 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 = device.core14.features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_FEATURES; VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_FEATURES; device.core14.features.pNext = features.pNext; device.core14.features.pNext = features.pNext; Loading Loading
vulkan/scripts/vkjson_generator.py +25 −5 Original line number Original line Diff line number Diff line Loading @@ -184,12 +184,22 @@ def generate_vk_core_struct_definition(f): vkJson_core_entries.append(f"{struct_name} {version.lower()}") vkJson_core_entries.append(f"{struct_name} {version.lower()}") f.write(f"struct {struct_name} {{\n") f.write(f"struct {struct_name} {{\n") f.write(f" {struct_name}() {{\n") # Start of constructor for item in items: for struct_type, _ in item.items(): field_name = "properties" if "Properties" in struct_type else "features" f.write(f" memset(&{field_name}, 0, sizeof({struct_type}));\n") f.write(" }\n") # End of constructor for item in items: for item in items: for struct_type, _ in item.items(): for struct_type, _ in item.items(): field_name = "properties" if "Properties" in struct_type else "features" field_name = "properties" if "Properties" in struct_type else "features" f.write(f" {struct_type} {field_name};\n") f.write(f" {struct_type} {field_name};\n") if version == "Core14": f.write(f"std::vector<VkImageLayout> copy_src_layouts;\n") f.write(f"std::vector<VkImageLayout> copy_dst_layouts;\n") f.write("};\n\n") f.write("};\n\n") return vkJson_core_entries return vkJson_core_entries Loading @@ -212,11 +222,6 @@ def generate_memset_statements(f): f.write(f"memset(&{variable_name}, 0, sizeof({class_name}));\n") f.write(f"memset(&{variable_name}, 0, sizeof({class_name}));\n") entries.append(f"{class_name} {variable_name}") entries.append(f"{class_name} {variable_name}") # Process vulkan core structs for version in VK.VULKAN_CORES_AND_STRUCTS_MAPPING["versions"]: struct_name = f"VkJson{version}" f.write(f"memset(&{version.lower()}, 0, sizeof({struct_name}));\n") return entries return entries Loading Loading @@ -1757,6 +1762,21 @@ VkJsonDevice VkJsonGetDevice(VkPhysicalDevice physical_device) { if (device.properties.apiVersion >= VK_API_VERSION_1_4) {\n""") if (device.properties.apiVersion >= VK_API_VERSION_1_4) {\n""") f.write(cc_code_properties_14) f.write(cc_code_properties_14) f.write(f"vkGetPhysicalDeviceProperties2(physical_device, &properties);\n\n") f.write(f"vkGetPhysicalDeviceProperties2(physical_device, &properties);\n\n") f.write("""\ 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); } \n""") f.write(cc_code_features_14) f.write(cc_code_features_14) f.write(f"vkGetPhysicalDeviceFeatures2(physical_device, &features);\n\n") f.write(f"vkGetPhysicalDeviceFeatures2(physical_device, &features);\n\n") f.write("""\ f.write("""\ Loading
vulkan/vkjson/vkjson.cc +3 −0 Original line number Original line Diff line number Diff line Loading @@ -36,6 +36,9 @@ #include <type_traits> #include <type_traits> #include <utility> #include <utility> /* * This file is autogenerated by vkjson_generator.py. Do not edit directly. */ namespace { namespace { /* /* Loading
vulkan/vkjson/vkjson.h +21 −4 Original line number Original line Diff line number Diff line Loading @@ -33,6 +33,9 @@ #undef max #undef max #endif #endif /* * This file is autogenerated by vkjson_generator.py. Do not edit directly. */ struct VkJsonLayer { struct VkJsonLayer { VkLayerProperties properties; VkLayerProperties properties; std::vector<VkExtensionProperties> extensions; std::vector<VkExtensionProperties> extensions; Loading Loading @@ -263,23 +266,41 @@ struct VkJsonKHRDriverProperties { }; }; struct VkJsonCore11 { struct VkJsonCore11 { VkJsonCore11() { memset(&properties, 0, sizeof(VkPhysicalDeviceVulkan11Properties)); memset(&features, 0, sizeof(VkPhysicalDeviceVulkan11Features)); } VkPhysicalDeviceVulkan11Properties properties; VkPhysicalDeviceVulkan11Properties properties; VkPhysicalDeviceVulkan11Features features; VkPhysicalDeviceVulkan11Features features; }; }; struct VkJsonCore12 { struct VkJsonCore12 { VkJsonCore12() { memset(&properties, 0, sizeof(VkPhysicalDeviceVulkan12Properties)); memset(&features, 0, sizeof(VkPhysicalDeviceVulkan12Features)); } VkPhysicalDeviceVulkan12Properties properties; VkPhysicalDeviceVulkan12Properties properties; VkPhysicalDeviceVulkan12Features features; VkPhysicalDeviceVulkan12Features features; }; }; struct VkJsonCore13 { struct VkJsonCore13 { VkJsonCore13() { memset(&properties, 0, sizeof(VkPhysicalDeviceVulkan13Properties)); memset(&features, 0, sizeof(VkPhysicalDeviceVulkan13Features)); } VkPhysicalDeviceVulkan13Properties properties; VkPhysicalDeviceVulkan13Properties properties; VkPhysicalDeviceVulkan13Features features; VkPhysicalDeviceVulkan13Features features; }; }; struct VkJsonCore14 { struct VkJsonCore14 { VkJsonCore14() { memset(&properties, 0, sizeof(VkPhysicalDeviceVulkan14Properties)); memset(&features, 0, sizeof(VkPhysicalDeviceVulkan14Features)); } VkPhysicalDeviceVulkan14Properties properties; VkPhysicalDeviceVulkan14Properties properties; VkPhysicalDeviceVulkan14Features features; VkPhysicalDeviceVulkan14Features features; std::vector<VkImageLayout> copy_src_layouts; std::vector<VkImageLayout> copy_dst_layouts; }; }; struct VkJsonDevice { struct VkJsonDevice { Loading @@ -306,10 +327,6 @@ struct VkJsonDevice { sizeof(VkPhysicalDeviceSamplerYcbcrConversionFeatures)); sizeof(VkPhysicalDeviceSamplerYcbcrConversionFeatures)); memset(&shader_draw_parameter_features, 0, memset(&shader_draw_parameter_features, 0, sizeof(VkPhysicalDeviceShaderDrawParameterFeatures)); 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; VkJsonKHRVariablePointers khr_variable_pointers; VkJsonKHRShaderFloat16Int8 khr_shader_float16_int8; VkJsonKHRShaderFloat16Int8 khr_shader_float16_int8; Loading
vulkan/vkjson/vkjson_instance.cc +20 −0 Original line number Original line Diff line number Diff line Loading @@ -27,6 +27,9 @@ #include <algorithm> #include <algorithm> #include <utility> #include <utility> /* * This file is autogenerated by vkjson_generator.py. Do not edit directly. */ namespace { namespace { bool EnumerateExtensions(const char* layer_name, bool EnumerateExtensions(const char* layer_name, Loading Loading @@ -512,6 +515,23 @@ VkJsonDevice VkJsonGetDevice(VkPhysicalDevice physical_device) { vkGetPhysicalDeviceProperties2(physical_device, &properties); 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 = device.core14.features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_FEATURES; VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_FEATURES; device.core14.features.pNext = features.pNext; device.core14.features.pNext = features.pNext; Loading