build: Update to header v1.4.356
diff --git a/CMakeLists.txt b/CMakeLists.txt
index cdfc9bc..921bb14 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -18,7 +18,7 @@
 cmake_minimum_required(VERSION 3.22.1)
 
 # The VERSION field is generated with the "--generated-version" flag in the generate_source.py script
-project(Vulkan-Tools VERSION 1.4.355)
+project(Vulkan-Tools VERSION 1.4.356)
 
 # This variable enables downstream users to customize the target API
 # variant (e.g. Vulkan SC)
diff --git a/icd/VkICD_mock_icd.json.in b/icd/VkICD_mock_icd.json.in
index 1c54805..414834a 100644
--- a/icd/VkICD_mock_icd.json.in
+++ b/icd/VkICD_mock_icd.json.in
@@ -2,6 +2,6 @@
     "file_format_version": "1.0.1",
     "ICD": {
         "library_path": "@JSON_LIBRARY_PATH@",
-        "api_version": "1.4.355"
+        "api_version": "1.4.356"
     }
 }
\ No newline at end of file
diff --git a/icd/generated/function_declarations.h b/icd/generated/function_declarations.h
index fb0f45f..bdc9506 100644
--- a/icd/generated/function_declarations.h
+++ b/icd/generated/function_declarations.h
@@ -567,6 +567,7 @@
     {"VK_EXT_shader_uniform_buffer_unsized_array", VK_EXT_SHADER_UNIFORM_BUFFER_UNSIZED_ARRAY_SPEC_VERSION},
     {"VK_NV_compute_occupancy_priority", VK_NV_COMPUTE_OCCUPANCY_PRIORITY_SPEC_VERSION},
     {"VK_EXT_shader_subgroup_partitioned", VK_EXT_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION},
+    {"VK_EXT_shader_ocp_microscaling_types", VK_EXT_SHADER_OCP_MICROSCALING_TYPES_SPEC_VERSION},
     {"VK_VALVE_shader_mixed_float_dot_product", VK_VALVE_SHADER_MIXED_FLOAT_DOT_PRODUCT_SPEC_VERSION},
     {"VK_SEC_throttle_hint", VK_SEC_THROTTLE_HINT_SPEC_VERSION},
     {"VK_ARM_data_graph_neural_accelerator_statistics", VK_ARM_DATA_GRAPH_NEURAL_ACCELERATOR_STATISTICS_SPEC_VERSION},
diff --git a/icd/generated/vk_typemap_helper.h b/icd/generated/vk_typemap_helper.h
index 2fc7cda..3c1f355 100644
--- a/icd/generated/vk_typemap_helper.h
+++ b/icd/generated/vk_typemap_helper.h
@@ -13872,6 +13872,18 @@
 };
 
 #endif  // VK_USE_PLATFORM_UBM_SEC
+// Map type VkPhysicalDeviceShaderOCPMicroscalingTypesFeaturesEXT to id
+// VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OCP_MICROSCALING_TYPES_FEATURES_EXT
+template <>
+struct LvlTypeMap<VkPhysicalDeviceShaderOCPMicroscalingTypesFeaturesEXT> {
+    static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OCP_MICROSCALING_TYPES_FEATURES_EXT;
+};
+
+template <>
+struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OCP_MICROSCALING_TYPES_FEATURES_EXT> {
+    typedef VkPhysicalDeviceShaderOCPMicroscalingTypesFeaturesEXT Type;
+};
+
 // Map type VkPhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE to id
 // VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MIXED_FLOAT_DOT_PRODUCT_FEATURES_VALVE
 template <>
diff --git a/scripts/known_good.json b/scripts/known_good.json
index f9ea30c..c4b4648 100644
--- a/scripts/known_good.json
+++ b/scripts/known_good.json
@@ -7,7 +7,7 @@
             "sub_dir": "Vulkan-Headers",
             "build_dir": "Vulkan-Headers/build",
             "install_dir": "Vulkan-Headers/build/install",
-            "commit": "v1.4.355"
+            "commit": "v1.4.356"
         },
         {
             "name": "MoltenVK",
@@ -56,7 +56,7 @@
             "cmake_options": [
                 "-DLOADER_USE_UNSAFE_FILE_SEARCH=ON"
             ],
-            "commit": "v1.4.355",
+            "commit": "v1.4.356",
             "build_platforms": [
                 "windows",
                 "linux",
diff --git a/vulkaninfo/generated/vulkaninfo.hpp b/vulkaninfo/generated/vulkaninfo.hpp
index d7571e1..39d2b41 100644
--- a/vulkaninfo/generated/vulkaninfo.hpp
+++ b/vulkaninfo/generated/vulkaninfo.hpp
@@ -1094,6 +1094,16 @@
             return "COMPONENT_TYPE_FLOAT8_E4M3_EXT";
         case (VK_COMPONENT_TYPE_FLOAT8_E5M2_EXT):
             return "COMPONENT_TYPE_FLOAT8_E5M2_EXT";
+        case (VK_COMPONENT_TYPE_FLOAT6_E2M3_EXT):
+            return "COMPONENT_TYPE_FLOAT6_E2M3_EXT";
+        case (VK_COMPONENT_TYPE_FLOAT6_E3M2_EXT):
+            return "COMPONENT_TYPE_FLOAT6_E3M2_EXT";
+        case (VK_COMPONENT_TYPE_FLOAT4_E2M1_EXT):
+            return "COMPONENT_TYPE_FLOAT4_E2M1_EXT";
+        case (VK_COMPONENT_TYPE_FLOAT8_UNSIGNED_E8M0_EXT):
+            return "COMPONENT_TYPE_FLOAT8_UNSIGNED_E8M0_EXT";
+        case (VK_COMPONENT_TYPE_MXINT8_EXT):
+            return "COMPONENT_TYPE_MXINT8_EXT";
         default:
             return std::string("UNKNOWN_VkComponentTypeKHR_value") + std::to_string(value);
     }
@@ -5091,6 +5101,8 @@
                                                            const VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT &obj);
 void DumpVkPhysicalDeviceShaderModuleIdentifierPropertiesEXT(Printer &p, std::string name,
                                                              const VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT &obj);
+void DumpVkPhysicalDeviceShaderOCPMicroscalingTypesFeaturesEXT(Printer &p, std::string name,
+                                                               const VkPhysicalDeviceShaderOCPMicroscalingTypesFeaturesEXT &obj);
 void DumpVkPhysicalDeviceShaderObjectFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceShaderObjectFeaturesEXT &obj);
 void DumpVkPhysicalDeviceShaderObjectPropertiesEXT(Printer &p, std::string name,
                                                    const VkPhysicalDeviceShaderObjectPropertiesEXT &obj);
@@ -7387,6 +7399,15 @@
     p.SetMinKeyWidth(35);
     p.PrintKeyValue("shaderModuleIdentifierAlgorithmUUID", obj.shaderModuleIdentifierAlgorithmUUID);
 }
+void DumpVkPhysicalDeviceShaderOCPMicroscalingTypesFeaturesEXT(Printer &p, std::string name,
+                                                               const VkPhysicalDeviceShaderOCPMicroscalingTypesFeaturesEXT &obj) {
+    ObjectWrapper object{p, name};
+    p.SetMinKeyWidth(24);
+    p.PrintKeyBool("shaderFloat4", static_cast<bool>(obj.shaderFloat4));
+    p.PrintKeyBool("shaderFloat6", static_cast<bool>(obj.shaderFloat6));
+    p.PrintKeyBool("shaderFloat8UnsignedE8M0", static_cast<bool>(obj.shaderFloat8UnsignedE8M0));
+    p.PrintKeyBool("shaderMXInt8", static_cast<bool>(obj.shaderMXInt8));
+}
 void DumpVkPhysicalDeviceShaderObjectFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceShaderObjectFeaturesEXT &obj) {
     ObjectWrapper object{p, name};
     p.SetMinKeyWidth(12);
@@ -9792,6 +9813,7 @@
     VkPhysicalDeviceShaderLongVectorFeaturesEXT PhysicalDeviceShaderLongVectorFeaturesEXT{};
     VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR{};
     VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT PhysicalDeviceShaderModuleIdentifierFeaturesEXT{};
+    VkPhysicalDeviceShaderOCPMicroscalingTypesFeaturesEXT PhysicalDeviceShaderOCPMicroscalingTypesFeaturesEXT{};
     VkPhysicalDeviceShaderObjectFeaturesEXT PhysicalDeviceShaderObjectFeaturesEXT{};
     VkPhysicalDeviceShaderQuadControlFeaturesKHR PhysicalDeviceShaderQuadControlFeaturesKHR{};
     VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR{};
@@ -10016,6 +10038,8 @@
             VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR;
         PhysicalDeviceShaderModuleIdentifierFeaturesEXT.sType =
             VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT;
+        PhysicalDeviceShaderOCPMicroscalingTypesFeaturesEXT.sType =
+            VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OCP_MICROSCALING_TYPES_FEATURES_EXT;
         PhysicalDeviceShaderObjectFeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT;
         PhysicalDeviceShaderQuadControlFeaturesKHR.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_QUAD_CONTROL_FEATURES_KHR;
         PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR.sType =
@@ -10408,6 +10432,8 @@
             chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR));
         if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SHADER_MODULE_IDENTIFIER_EXTENSION_NAME))
             chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceShaderModuleIdentifierFeaturesEXT));
+        if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SHADER_OCP_MICROSCALING_TYPES_EXTENSION_NAME))
+            chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceShaderOCPMicroscalingTypesFeaturesEXT));
         if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SHADER_OBJECT_EXTENSION_NAME))
             chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceShaderObjectFeaturesEXT));
         if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_QUAD_CONTROL_EXTENSION_NAME))
@@ -11784,6 +11810,13 @@
             DumpVkPhysicalDeviceShaderModuleIdentifierFeaturesEXT(p, name, *props);
             p.AddNewline();
         }
+        if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OCP_MICROSCALING_TYPES_FEATURES_EXT) {
+            const VkPhysicalDeviceShaderOCPMicroscalingTypesFeaturesEXT *props =
+                (const VkPhysicalDeviceShaderOCPMicroscalingTypesFeaturesEXT *)structure;
+            const char *name = "VkPhysicalDeviceShaderOCPMicroscalingTypesFeaturesEXT";
+            DumpVkPhysicalDeviceShaderOCPMicroscalingTypesFeaturesEXT(p, name, *props);
+            p.AddNewline();
+        }
         if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT) {
             const VkPhysicalDeviceShaderObjectFeaturesEXT *props = (const VkPhysicalDeviceShaderObjectFeaturesEXT *)structure;
             const char *name = "VkPhysicalDeviceShaderObjectFeaturesEXT";