1 #ifndef _VKSJSON_HPP 2 #define _VKSJSON_HPP 3 4 /*------------------------------------------------------------------------- 5 * Vulkan CTS Framework 6 * -------------------- 7 * 8 * Copyright (c) 2021 The Khronos Group Inc. 9 * 10 * Licensed under the Apache License, Version 2.0 (the "License"); 11 * you may not use this file except in compliance with the License. 12 * You may obtain a copy of the License at 13 * 14 * http://www.apache.org/licenses/LICENSE-2.0 15 * 16 * Unless required by applicable law or agreed to in writing, software 17 * distributed under the License is distributed on an "AS IS" BASIS, 18 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 19 * See the License for the specific language governing permissions and 20 * limitations under the License. 21 * 22 *-------------------------------------------------------------------------*/ 23 24 #include "vksCommon.hpp" 25 26 #include "vkPrograms.hpp" 27 28 #include "vkDefs.hpp" 29 using namespace vk; 30 31 namespace Json 32 { 33 class CharReader; 34 } 35 36 namespace vksc_server 37 { 38 39 struct VulkanPipelineStatistics; 40 41 namespace json 42 { 43 44 struct Context 45 { 46 Context(); 47 ~Context(); 48 std::unique_ptr<Json::CharReader> reader; 49 }; 50 51 void runGarbageCollection(); 52 53 string writeJSON_VkGraphicsPipelineCreateInfo(const vk::VkGraphicsPipelineCreateInfo &pCreateInfo); 54 string writeJSON_VkComputePipelineCreateInfo(const vk::VkComputePipelineCreateInfo &pCreateInfo); 55 string writeJSON_VkRenderPassCreateInfo(const vk::VkRenderPassCreateInfo &pCreateInfo); 56 string writeJSON_VkRenderPassCreateInfo2(const vk::VkRenderPassCreateInfo2 &pCreateInfo); 57 string writeJSON_VkPipelineLayoutCreateInfo(const vk::VkPipelineLayoutCreateInfo &pCreateInfo); 58 string writeJSON_VkDescriptorSetLayoutCreateInfo(const vk::VkDescriptorSetLayoutCreateInfo &pCreateInfo); 59 string writeJSON_VkSamplerCreateInfo(const vk::VkSamplerCreateInfo &pCreateInfo); 60 string writeJSON_VkSamplerYcbcrConversionCreateInfo(const vk::VkSamplerYcbcrConversionCreateInfo &pCreateInfo); 61 string writeJSON_VkShaderModuleCreateInfo(const vk::VkShaderModuleCreateInfo &smCI); 62 string writeJSON_VkDeviceObjectReservationCreateInfo(const vk::VkDeviceObjectReservationCreateInfo &dmrCI); 63 string writeJSON_VkPipelineOfflineCreateInfo(const vk::VkPipelineOfflineCreateInfo &piInfo); 64 string writeJSON_GraphicsPipeline_vkpccjson( 65 const std::string &filePrefix, uint32_t pipelineIndex, const vk::VkPipelineOfflineCreateInfo id, 66 const vk::VkGraphicsPipelineCreateInfo &gpCI, const vk::VkPhysicalDeviceFeatures2 &deviceFeatures2, 67 const std::vector<std::string> &deviceExtensions, 68 const std::map<vk::VkSamplerYcbcrConversion, vk::VkSamplerYcbcrConversionCreateInfo> &samplerYcbcrConversions, 69 const std::map<vk::VkSampler, vk::VkSamplerCreateInfo> &samplers, 70 const std::map<vk::VkDescriptorSetLayout, vk::VkDescriptorSetLayoutCreateInfo> &descriptorSetLayouts, 71 const std::map<vk::VkRenderPass, vk::VkRenderPassCreateInfo> &renderPasses, 72 const std::map<vk::VkRenderPass, vk::VkRenderPassCreateInfo2> &renderPasses2, 73 const std::map<vk::VkPipelineLayout, vk::VkPipelineLayoutCreateInfo> &pipelineLayouts); 74 string writeJSON_ComputePipeline_vkpccjson( 75 const std::string &filePrefix, uint32_t pipelineIndex, const vk::VkPipelineOfflineCreateInfo id, 76 const vk::VkComputePipelineCreateInfo &cpCI, const vk::VkPhysicalDeviceFeatures2 &deviceFeatures2, 77 const std::vector<std::string> &deviceExtensions, 78 const std::map<vk::VkSamplerYcbcrConversion, vk::VkSamplerYcbcrConversionCreateInfo> &samplerYcbcrConversions, 79 const std::map<vk::VkSampler, vk::VkSamplerCreateInfo> &samplers, 80 const std::map<vk::VkDescriptorSetLayout, vk::VkDescriptorSetLayoutCreateInfo> &descriptorSetLayouts, 81 const std::map<vk::VkPipelineLayout, vk::VkPipelineLayoutCreateInfo> &pipelineLayouts); 82 string writeJSON_VkPhysicalDeviceFeatures2(const vk::VkPhysicalDeviceFeatures2 &features); 83 string writeJSON_pNextChain(const void *pNext); 84 85 void readJSON_VkGraphicsPipelineCreateInfo(Context &context, const string &graphicsPipelineCreateInfo, 86 vk::VkGraphicsPipelineCreateInfo &gpCI); 87 void readJSON_VkComputePipelineCreateInfo(Context &context, const string &computePipelineCreateInfo, 88 vk::VkComputePipelineCreateInfo &cpCI); 89 void readJSON_VkRenderPassCreateInfo(Context &context, const string &renderPassCreateInfo, 90 vk::VkRenderPassCreateInfo &rpCI); 91 void readJSON_VkRenderPassCreateInfo2(Context &context, const string &renderPassCreateInfo, 92 vk::VkRenderPassCreateInfo2 &rpCI); 93 void readJSON_VkDescriptorSetLayoutCreateInfo(Context &context, const string &descriptorSetLayoutCreateInfo, 94 vk::VkDescriptorSetLayoutCreateInfo &dsCI); 95 void readJSON_VkPipelineLayoutCreateInfo(Context &context, const string &pipelineLayoutCreateInfo, 96 vk::VkPipelineLayoutCreateInfo &plCI); 97 void readJSON_VkShaderModuleCreateInfo(Context &context, const string &shaderModuleCreate, 98 vk::VkShaderModuleCreateInfo &smCI, vector<uint8_t> &spirvShader); 99 void readJSON_VkDeviceObjectReservationCreateInfo(Context &context, const string &deviceMemoryReservation, 100 vk::VkDeviceObjectReservationCreateInfo &dmrCI); 101 void readJSON_VkPipelineOfflineCreateInfo(Context &context, const string &pipelineIdentifierInfo, 102 vk::VkPipelineOfflineCreateInfo &piInfo); 103 void readJSON_VkSamplerCreateInfo(Context &context, const string &samplerCreateInfo, vk::VkSamplerCreateInfo &sCI); 104 void readJSON_VkSamplerYcbcrConversionCreateInfo(Context &context, const std::string &samplerYcbcrConversionCreateInfo, 105 vk::VkSamplerYcbcrConversionCreateInfo &sycCI); 106 void readJSON_VkPhysicalDeviceFeatures2(Context &context, const std::string &featuresJson, 107 vk::VkPhysicalDeviceFeatures2 &features); 108 void *readJSON_pNextChain(Context &context, const std::string &chainJson); 109 110 } // namespace json 111 112 } // namespace vksc_server 113 114 #endif // _VKSJSON_HPP 115