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