| /////////////////////////////////////////////////////////////////////////////// |
| // |
| // Copyright (c) 2015-2016 The Khronos Group Inc. |
| // Copyright (c) 2015-2016 Valve Corporation |
| // Copyright (c) 2015-2016 LunarG, Inc. |
| // Copyright (c) 2015-2016 Google, Inc. |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| /////////////////////////////////////////////////////////////////////////////// |
| |
| #ifndef VKJSON_H_ |
| #define VKJSON_H_ |
| |
| #include <string.h> |
| #include <vulkan/vulkan.h> |
| |
| #include <map> |
| #include <string> |
| #include <vector> |
| |
| #ifdef WIN32 |
| #undef min |
| #undef max |
| #endif |
| |
| /* |
| * This file is autogenerated by vkjson_generator.py. Do not edit directly. |
| */ |
| struct VkJsonLayer { |
| VkLayerProperties properties; |
| std::vector<VkExtensionProperties> extensions; |
| }; |
| |
| struct VkJsonKHRVariablePointers { |
| VkJsonKHRVariablePointers() { |
| reported = false; |
| memset(&variable_pointer_features_khr, 0, |
| sizeof(VkPhysicalDeviceVariablePointerFeaturesKHR)); |
| memset(&variable_pointers_features_khr, 0, |
| sizeof(VkPhysicalDeviceVariablePointersFeaturesKHR)); |
| } |
| bool reported; |
| VkPhysicalDeviceVariablePointerFeaturesKHR variable_pointer_features_khr; |
| VkPhysicalDeviceVariablePointersFeaturesKHR variable_pointers_features_khr; |
| }; |
| |
| struct VkJsonKHRShaderFloat16Int8 { |
| VkJsonKHRShaderFloat16Int8() { |
| reported = false; |
| memset(&shader_float16_int8_features_khr, 0, |
| sizeof(VkPhysicalDeviceShaderFloat16Int8FeaturesKHR)); |
| memset(&float16_int8_features_khr, 0, |
| sizeof(VkPhysicalDeviceFloat16Int8FeaturesKHR)); |
| } |
| bool reported; |
| VkPhysicalDeviceShaderFloat16Int8FeaturesKHR shader_float16_int8_features_khr; |
| VkPhysicalDeviceFloat16Int8FeaturesKHR float16_int8_features_khr; |
| }; |
| |
| struct VkJsonExtImage2dViewOf3d { |
| VkJsonExtImage2dViewOf3d() { |
| reported = false; |
| memset(&image_2d_view_of_3d_features_ext, 0, |
| sizeof(VkPhysicalDeviceImage2DViewOf3DFeaturesEXT)); |
| } |
| bool reported; |
| VkPhysicalDeviceImage2DViewOf3DFeaturesEXT image_2d_view_of_3d_features_ext; |
| }; |
| |
| struct VkJsonExtCustomBorderColor { |
| VkJsonExtCustomBorderColor() { |
| reported = false; |
| memset(&custom_border_color_features_ext, 0, |
| sizeof(VkPhysicalDeviceCustomBorderColorFeaturesEXT)); |
| } |
| bool reported; |
| VkPhysicalDeviceCustomBorderColorFeaturesEXT custom_border_color_features_ext; |
| }; |
| |
| struct VkJsonExtPrimitiveTopologyListRestart { |
| VkJsonExtPrimitiveTopologyListRestart() { |
| reported = false; |
| memset(&primitive_topology_list_restart_features_ext, 0, |
| sizeof(VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT)); |
| } |
| bool reported; |
| VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT |
| primitive_topology_list_restart_features_ext; |
| }; |
| |
| struct VkJsonExtProvokingVertex { |
| VkJsonExtProvokingVertex() { |
| reported = false; |
| memset(&provoking_vertex_features_ext, 0, |
| sizeof(VkPhysicalDeviceProvokingVertexFeaturesEXT)); |
| } |
| bool reported; |
| VkPhysicalDeviceProvokingVertexFeaturesEXT provoking_vertex_features_ext; |
| }; |
| |
| struct VkJsonKHRIndexTypeUint8 { |
| VkJsonKHRIndexTypeUint8() { |
| reported = false; |
| memset(&index_type_uint8_features_khr, 0, |
| sizeof(VkPhysicalDeviceIndexTypeUint8FeaturesKHR)); |
| } |
| bool reported; |
| VkPhysicalDeviceIndexTypeUint8FeaturesKHR index_type_uint8_features_khr; |
| }; |
| |
| struct VkJsonExtIndexTypeUint8 { |
| VkJsonExtIndexTypeUint8() { |
| reported = false; |
| memset(&index_type_uint8_features_ext, 0, |
| sizeof(VkPhysicalDeviceIndexTypeUint8FeaturesEXT)); |
| } |
| bool reported; |
| VkPhysicalDeviceIndexTypeUint8FeaturesEXT index_type_uint8_features_ext; |
| }; |
| |
| struct VkJsonKHRVertexAttributeDivisor { |
| VkJsonKHRVertexAttributeDivisor() { |
| reported = false; |
| memset(&vertex_attribute_divisor_features_khr, 0, |
| sizeof(VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR)); |
| } |
| bool reported; |
| VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR |
| vertex_attribute_divisor_features_khr; |
| }; |
| |
| struct VkJsonExtVertexAttributeDivisor { |
| VkJsonExtVertexAttributeDivisor() { |
| reported = false; |
| memset(&vertex_attribute_divisor_features_ext, 0, |
| sizeof(VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT)); |
| } |
| bool reported; |
| VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT |
| vertex_attribute_divisor_features_ext; |
| }; |
| |
| struct VkJsonExtTransformFeedback { |
| VkJsonExtTransformFeedback() { |
| reported = false; |
| memset(&transform_feedback_features_ext, 0, |
| sizeof(VkPhysicalDeviceTransformFeedbackFeaturesEXT)); |
| } |
| bool reported; |
| VkPhysicalDeviceTransformFeedbackFeaturesEXT transform_feedback_features_ext; |
| }; |
| |
| struct VkJsonKHRShaderSubgroupUniformControlFlow { |
| VkJsonKHRShaderSubgroupUniformControlFlow() { |
| reported = false; |
| memset(&shader_subgroup_uniform_control_flow_features_khr, 0, |
| sizeof(VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR)); |
| } |
| bool reported; |
| VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR |
| shader_subgroup_uniform_control_flow_features_khr; |
| }; |
| |
| struct VkJsonKHRShaderSubgroupExtendedTypes { |
| VkJsonKHRShaderSubgroupExtendedTypes() { |
| reported = false; |
| memset(&shader_subgroup_extended_types_features_khr, 0, |
| sizeof(VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR)); |
| } |
| bool reported; |
| VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR |
| shader_subgroup_extended_types_features_khr; |
| }; |
| |
| struct VkJsonKHR8bitStorage { |
| VkJsonKHR8bitStorage() { |
| reported = false; |
| memset(&bit8_storage_features_khr, 0, |
| sizeof(VkPhysicalDevice8BitStorageFeaturesKHR)); |
| } |
| bool reported; |
| VkPhysicalDevice8BitStorageFeaturesKHR bit8_storage_features_khr; |
| }; |
| |
| struct VkJsonKHRShaderIntegerDotProduct { |
| VkJsonKHRShaderIntegerDotProduct() { |
| reported = false; |
| memset(&shader_integer_dot_product_features_khr, 0, |
| sizeof(VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR)); |
| } |
| bool reported; |
| VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR |
| shader_integer_dot_product_features_khr; |
| }; |
| |
| struct VkJsonIMGRelaxedLineRasterization { |
| VkJsonIMGRelaxedLineRasterization() { |
| reported = false; |
| memset(&relaxed_line_rasterization_features_img, 0, |
| sizeof(VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG)); |
| } |
| bool reported; |
| VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG |
| relaxed_line_rasterization_features_img; |
| }; |
| |
| struct VkJsonKHRLineRasterization { |
| VkJsonKHRLineRasterization() { |
| reported = false; |
| memset(&line_rasterization_features_khr, 0, |
| sizeof(VkPhysicalDeviceLineRasterizationFeaturesKHR)); |
| } |
| bool reported; |
| VkPhysicalDeviceLineRasterizationFeaturesKHR line_rasterization_features_khr; |
| }; |
| |
| struct VkJsonExtLineRasterization { |
| VkJsonExtLineRasterization() { |
| reported = false; |
| memset(&line_rasterization_features_ext, 0, |
| sizeof(VkPhysicalDeviceLineRasterizationFeaturesEXT)); |
| } |
| bool reported; |
| VkPhysicalDeviceLineRasterizationFeaturesEXT line_rasterization_features_ext; |
| }; |
| |
| struct VkJsonExtPrimitivesGeneratedQuery { |
| VkJsonExtPrimitivesGeneratedQuery() { |
| reported = false; |
| memset(&primitives_generated_query_features_ext, 0, |
| sizeof(VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT)); |
| } |
| bool reported; |
| VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT |
| primitives_generated_query_features_ext; |
| }; |
| |
| struct VkJsonKHRShaderFloatControls { |
| VkJsonKHRShaderFloatControls() { |
| reported = false; |
| memset(&float_controls_properties_khr, 0, |
| sizeof(VkPhysicalDeviceFloatControlsPropertiesKHR)); |
| } |
| bool reported; |
| VkPhysicalDeviceFloatControlsPropertiesKHR float_controls_properties_khr; |
| }; |
| |
| struct VkJsonKHRDriverProperties { |
| VkJsonKHRDriverProperties() { |
| reported = false; |
| memset(&driver_properties_khr, 0, |
| sizeof(VkPhysicalDeviceDriverPropertiesKHR)); |
| } |
| bool reported; |
| VkPhysicalDeviceDriverPropertiesKHR driver_properties_khr; |
| }; |
| |
| 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 { |
| VkJsonDevice() { |
| memset(&properties, 0, sizeof(VkPhysicalDeviceProperties)); |
| memset(&features, 0, sizeof(VkPhysicalDeviceFeatures)); |
| memset(&memory, 0, sizeof(VkPhysicalDeviceMemoryProperties)); |
| memset(&subgroup_properties, 0, sizeof(VkPhysicalDeviceSubgroupProperties)); |
| memset(&point_clipping_properties, 0, |
| sizeof(VkPhysicalDevicePointClippingProperties)); |
| memset(&multiview_properties, 0, |
| sizeof(VkPhysicalDeviceMultiviewProperties)); |
| memset(&id_properties, 0, sizeof(VkPhysicalDeviceIDProperties)); |
| memset(&maintenance3_properties, 0, |
| sizeof(VkPhysicalDeviceMaintenance3Properties)); |
| memset(&bit16_storage_features, 0, |
| sizeof(VkPhysicalDevice16BitStorageFeatures)); |
| memset(&multiview_features, 0, sizeof(VkPhysicalDeviceMultiviewFeatures)); |
| memset(&variable_pointers_features, 0, |
| sizeof(VkPhysicalDeviceVariablePointersFeatures)); |
| memset(&protected_memory_features, 0, |
| sizeof(VkPhysicalDeviceProtectedMemoryFeatures)); |
| memset(&sampler_ycbcr_conversion_features, 0, |
| sizeof(VkPhysicalDeviceSamplerYcbcrConversionFeatures)); |
| memset(&shader_draw_parameter_features, 0, |
| sizeof(VkPhysicalDeviceShaderDrawParameterFeatures)); |
| } |
| VkJsonKHRVariablePointers khr_variable_pointers; |
| VkJsonKHRShaderFloat16Int8 khr_shader_float16_int8; |
| VkJsonExtImage2dViewOf3d ext_image_2d_view_of_3d; |
| VkJsonExtCustomBorderColor ext_custom_border_color; |
| VkJsonExtPrimitiveTopologyListRestart ext_primitive_topology_list_restart; |
| VkJsonExtProvokingVertex ext_provoking_vertex; |
| VkJsonKHRIndexTypeUint8 khr_index_type_uint8; |
| VkJsonExtIndexTypeUint8 ext_index_type_uint8; |
| VkJsonKHRVertexAttributeDivisor khr_vertex_attribute_divisor; |
| VkJsonExtVertexAttributeDivisor ext_vertex_attribute_divisor; |
| VkJsonExtTransformFeedback ext_transform_feedback; |
| VkJsonKHRShaderSubgroupUniformControlFlow |
| khr_shader_subgroup_uniform_control_flow; |
| VkJsonKHRShaderSubgroupExtendedTypes khr_shader_subgroup_extended_types; |
| VkJsonKHR8bitStorage khr_8bit_storage; |
| VkJsonKHRShaderIntegerDotProduct khr_shader_integer_dot_product; |
| VkJsonIMGRelaxedLineRasterization img_relaxed_line_rasterization; |
| VkJsonKHRLineRasterization khr_line_rasterization; |
| VkJsonExtLineRasterization ext_line_rasterization; |
| VkJsonExtPrimitivesGeneratedQuery ext_primitives_generated_query; |
| VkJsonKHRShaderFloatControls khr_shader_float_controls; |
| VkJsonKHRDriverProperties khr_driver_properties; |
| VkJsonCore11 core11; |
| VkJsonCore12 core12; |
| VkJsonCore13 core13; |
| VkJsonCore14 core14; |
| VkPhysicalDeviceProperties properties; |
| VkPhysicalDeviceFeatures features; |
| VkPhysicalDeviceMemoryProperties memory; |
| VkPhysicalDeviceSubgroupProperties subgroup_properties; |
| VkPhysicalDevicePointClippingProperties point_clipping_properties; |
| VkPhysicalDeviceMultiviewProperties multiview_properties; |
| VkPhysicalDeviceIDProperties id_properties; |
| VkPhysicalDeviceMaintenance3Properties maintenance3_properties; |
| VkPhysicalDevice16BitStorageFeatures bit16_storage_features; |
| VkPhysicalDeviceMultiviewFeatures multiview_features; |
| VkPhysicalDeviceVariablePointersFeatures variable_pointers_features; |
| VkPhysicalDeviceProtectedMemoryFeatures protected_memory_features; |
| VkPhysicalDeviceSamplerYcbcrConversionFeatures |
| sampler_ycbcr_conversion_features; |
| VkPhysicalDeviceShaderDrawParameterFeatures shader_draw_parameter_features; |
| std::vector<VkQueueFamilyProperties> queues; |
| std::vector<VkExtensionProperties> extensions; |
| std::vector<VkLayerProperties> layers; |
| std::map<VkFormat, VkFormatProperties> formats; |
| std::map<VkExternalFenceHandleTypeFlagBits, VkExternalFenceProperties> |
| external_fence_properties; |
| std::map<VkExternalSemaphoreHandleTypeFlagBits, VkExternalSemaphoreProperties> |
| external_semaphore_properties; |
| }; |
| |
| struct VkJsonDeviceGroup { |
| VkJsonDeviceGroup() { |
| memset(&properties, 0, sizeof(VkPhysicalDeviceGroupProperties)); |
| } |
| VkPhysicalDeviceGroupProperties properties; |
| std::vector<uint32_t> device_inds; |
| }; |
| |
| struct VkJsonInstance { |
| VkJsonInstance() : api_version(0) {} |
| uint32_t api_version; |
| std::vector<VkJsonLayer> layers; |
| std::vector<VkExtensionProperties> extensions; |
| std::vector<VkJsonDevice> devices; |
| std::vector<VkJsonDeviceGroup> device_groups; |
| }; |
| |
| VkJsonInstance VkJsonGetInstance(); |
| std::string VkJsonInstanceToJson(const VkJsonInstance& instance); |
| bool VkJsonInstanceFromJson(const std::string& json, |
| VkJsonInstance* instance, |
| std::string* errors); |
| |
| VkJsonDevice VkJsonGetDevice(VkPhysicalDevice device); |
| std::string VkJsonDeviceToJson(const VkJsonDevice& device); |
| bool VkJsonDeviceFromJson(const std::string& json, |
| VkJsonDevice* device, |
| std::string* errors); |
| |
| std::string VkJsonImageFormatPropertiesToJson( |
| const VkImageFormatProperties& properties); |
| bool VkJsonImageFormatPropertiesFromJson(const std::string& json, |
| VkImageFormatProperties* properties, |
| std::string* errors); |
| |
| // Backward-compatibility aliases |
| typedef VkJsonDevice VkJsonAllProperties; |
| inline VkJsonAllProperties VkJsonGetAllProperties( |
| VkPhysicalDevice physicalDevice) { |
| return VkJsonGetDevice(physicalDevice); |
| } |
| inline std::string VkJsonAllPropertiesToJson( |
| const VkJsonAllProperties& properties) { |
| return VkJsonDeviceToJson(properties); |
| } |
| inline bool VkJsonAllPropertiesFromJson(const std::string& json, |
| VkJsonAllProperties* properties, |
| std::string* errors) { |
| return VkJsonDeviceFromJson(json, properties, errors); |
| } |
| |
| #endif // VKJSON_H_ |