1e5c31af7Sopenharmony_ci#ifndef _VKSCACHEBUILDER_HPP
2e5c31af7Sopenharmony_ci#define _VKSCACHEBUILDER_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#include "vksStructsVKSC.hpp"
26e5c31af7Sopenharmony_ci
27e5c31af7Sopenharmony_ci#include "vkPrograms.hpp"
28e5c31af7Sopenharmony_ci
29e5c31af7Sopenharmony_cinamespace vksc_server
30e5c31af7Sopenharmony_ci{
31e5c31af7Sopenharmony_ci
32e5c31af7Sopenharmony_civoid							exportFilesForExternalCompiler	(const VulkanPipelineCacheInput&	input,
33e5c31af7Sopenharmony_ci																 const std::string&					path,
34e5c31af7Sopenharmony_ci																 const std::string&					filePrefix);
35e5c31af7Sopenharmony_civector<u8>						buildOfflinePipelineCache		(const VulkanPipelineCacheInput&	input,
36e5c31af7Sopenharmony_ci																const std::string&					pipelineCompilerPath,
37e5c31af7Sopenharmony_ci																const std::string&					pipelineCompilerDataDir,
38e5c31af7Sopenharmony_ci																const std::string&					pipelineCompilerArgs,
39e5c31af7Sopenharmony_ci																const std::string&					pipelineCompilerOutputFile,
40e5c31af7Sopenharmony_ci																const std::string&					pipelineCompilerLogFile,
41e5c31af7Sopenharmony_ci																const std::string&					pipelineCompilerFilePrefix);
42e5c31af7Sopenharmony_civector<u8>						buildPipelineCache				(const VulkanPipelineCacheInput&	input,
43e5c31af7Sopenharmony_ci																 const vk::PlatformInterface&		vkp,
44e5c31af7Sopenharmony_ci																 vk::VkInstance						instance,
45e5c31af7Sopenharmony_ci																 const vk::InstanceInterface&		vki,
46e5c31af7Sopenharmony_ci																 vk::VkPhysicalDevice				physicalDevice,
47e5c31af7Sopenharmony_ci																 deUint32							queueIndex);
48e5c31af7Sopenharmony_cistd::vector<VulkanPipelineSize>	extractSizesFromPipelineCache	(const VulkanPipelineCacheInput&	input,
49e5c31af7Sopenharmony_ci																 const vector<u8>&					pipelineCache,
50e5c31af7Sopenharmony_ci																 deUint32							pipelineDefaultSize,
51e5c31af7Sopenharmony_ci																 bool								recyclePipelineMemory);
52e5c31af7Sopenharmony_ci
53e5c31af7Sopenharmony_ci}
54e5c31af7Sopenharmony_ci
55e5c31af7Sopenharmony_ci#endif // _VKSCACHEBUILDER_HPP
56