1846cc3ce8e721a972ef38c44e24da49ea96110caPyry Haulos#ifndef _VKDEVICEUTIL_HPP
2846cc3ce8e721a972ef38c44e24da49ea96110caPyry Haulos#define _VKDEVICEUTIL_HPP
3846cc3ce8e721a972ef38c44e24da49ea96110caPyry Haulos/*-------------------------------------------------------------------------
4846cc3ce8e721a972ef38c44e24da49ea96110caPyry Haulos * Vulkan CTS Framework
5846cc3ce8e721a972ef38c44e24da49ea96110caPyry Haulos * --------------------
6846cc3ce8e721a972ef38c44e24da49ea96110caPyry Haulos *
7846cc3ce8e721a972ef38c44e24da49ea96110caPyry Haulos * Copyright (c) 2015 Google Inc.
8846cc3ce8e721a972ef38c44e24da49ea96110caPyry Haulos *
9978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos * Licensed under the Apache License, Version 2.0 (the "License");
10978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos * you may not use this file except in compliance with the License.
11978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos * You may obtain a copy of the License at
12846cc3ce8e721a972ef38c44e24da49ea96110caPyry Haulos *
13978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos *      http://www.apache.org/licenses/LICENSE-2.0
14846cc3ce8e721a972ef38c44e24da49ea96110caPyry Haulos *
15978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos * Unless required by applicable law or agreed to in writing, software
16978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos * distributed under the License is distributed on an "AS IS" BASIS,
17978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos * See the License for the specific language governing permissions and
19978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos * limitations under the License.
20846cc3ce8e721a972ef38c44e24da49ea96110caPyry Haulos *
21846cc3ce8e721a972ef38c44e24da49ea96110caPyry Haulos *//*!
22846cc3ce8e721a972ef38c44e24da49ea96110caPyry Haulos * \file
23846cc3ce8e721a972ef38c44e24da49ea96110caPyry Haulos * \brief Instance and device initialization utilities.
24846cc3ce8e721a972ef38c44e24da49ea96110caPyry Haulos *//*--------------------------------------------------------------------*/
25846cc3ce8e721a972ef38c44e24da49ea96110caPyry Haulos
26846cc3ce8e721a972ef38c44e24da49ea96110caPyry Haulos#include "vkDefs.hpp"
27846cc3ce8e721a972ef38c44e24da49ea96110caPyry Haulos#include "vkRef.hpp"
28846cc3ce8e721a972ef38c44e24da49ea96110caPyry Haulos
2912021ac26c6d6f8923f526bd7635dcf68e0c4061Pyry Haulos#include <vector>
3012021ac26c6d6f8923f526bd7635dcf68e0c4061Pyry Haulos#include <string>
3112021ac26c6d6f8923f526bd7635dcf68e0c4061Pyry Haulos
32846cc3ce8e721a972ef38c44e24da49ea96110caPyry Haulosnamespace tcu
33846cc3ce8e721a972ef38c44e24da49ea96110caPyry Haulos{
34846cc3ce8e721a972ef38c44e24da49ea96110caPyry Haulosclass CommandLine;
35846cc3ce8e721a972ef38c44e24da49ea96110caPyry Haulos}
36846cc3ce8e721a972ef38c44e24da49ea96110caPyry Haulos
37846cc3ce8e721a972ef38c44e24da49ea96110caPyry Haulosnamespace vk
38846cc3ce8e721a972ef38c44e24da49ea96110caPyry Haulos{
39846cc3ce8e721a972ef38c44e24da49ea96110caPyry Haulos
4012021ac26c6d6f8923f526bd7635dcf68e0c4061Pyry HaulosMove<VkInstance>	createDefaultInstance	(const PlatformInterface&			vkPlatform);
4112021ac26c6d6f8923f526bd7635dcf68e0c4061Pyry HaulosMove<VkInstance>	createDefaultInstance	(const PlatformInterface&			vkPlatform,
4212021ac26c6d6f8923f526bd7635dcf68e0c4061Pyry Haulos											 const std::vector<std::string>&	enabledLayers,
43f1d576d0d3f98e27b55038c5b29df26d1d0f0d79Pyry Haulos											 const std::vector<std::string>&	enabledExtensions,
44f1d576d0d3f98e27b55038c5b29df26d1d0f0d79Pyry Haulos											 const VkAllocationCallbacks*		pAllocator	= DE_NULL);
4512021ac26c6d6f8923f526bd7635dcf68e0c4061Pyry Haulos
4612021ac26c6d6f8923f526bd7635dcf68e0c4061Pyry HaulosVkPhysicalDevice	chooseDevice			(const InstanceInterface&			vkInstance,
4712021ac26c6d6f8923f526bd7635dcf68e0c4061Pyry Haulos											 VkInstance							instance,
4812021ac26c6d6f8923f526bd7635dcf68e0c4061Pyry Haulos											 const tcu::CommandLine&			cmdLine);
49846cc3ce8e721a972ef38c44e24da49ea96110caPyry Haulos
50846cc3ce8e721a972ef38c44e24da49ea96110caPyry Haulos} // vk
51846cc3ce8e721a972ef38c44e24da49ea96110caPyry Haulos
52846cc3ce8e721a972ef38c44e24da49ea96110caPyry Haulos#endif // _VKDEVICEUTIL_HPP
53