xref: /aosp_15_r20/external/deqp/external/vulkancts/vkscserver/vksJson.hpp (revision 35238bce31c2a825756842865a792f8cf7f89930)
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