xref: /aosp_15_r20/external/vulkan-validation-layers/tests/test_environment.h (revision b7893ccf7851cd6a48cc5a1e965257d8a5cdcc70)
1*b7893ccfSSadaf Ebrahimi /*
2*b7893ccfSSadaf Ebrahimi  * Copyright (c) 2015-2016 The Khronos Group Inc.
3*b7893ccfSSadaf Ebrahimi  * Copyright (c) 2015-2016 Valve Corporation
4*b7893ccfSSadaf Ebrahimi  * Copyright (c) 2015-2016 LunarG, Inc.
5*b7893ccfSSadaf Ebrahimi  *
6*b7893ccfSSadaf Ebrahimi  * Licensed under the Apache License, Version 2.0 (the "License");
7*b7893ccfSSadaf Ebrahimi  * you may not use this file except in compliance with the License.
8*b7893ccfSSadaf Ebrahimi  * You may obtain a copy of the License at
9*b7893ccfSSadaf Ebrahimi  *
10*b7893ccfSSadaf Ebrahimi  *     http://www.apache.org/licenses/LICENSE-2.0
11*b7893ccfSSadaf Ebrahimi  *
12*b7893ccfSSadaf Ebrahimi  * Unless required by applicable law or agreed to in writing, software
13*b7893ccfSSadaf Ebrahimi  * distributed under the License is distributed on an "AS IS" BASIS,
14*b7893ccfSSadaf Ebrahimi  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15*b7893ccfSSadaf Ebrahimi  * See the License for the specific language governing permissions and
16*b7893ccfSSadaf Ebrahimi  * limitations under the License.
17*b7893ccfSSadaf Ebrahimi  *
18*b7893ccfSSadaf Ebrahimi  * Author: Chia-I Wu <[email protected]>
19*b7893ccfSSadaf Ebrahimi  * Author: Chris Forbes <[email protected]>
20*b7893ccfSSadaf Ebrahimi  * Author: Courtney Goeltzenleuchter <[email protected]>
21*b7893ccfSSadaf Ebrahimi  * Author: Mark Lobodzinski <[email protected]>
22*b7893ccfSSadaf Ebrahimi  * Author: Mike Stroyan <[email protected]>
23*b7893ccfSSadaf Ebrahimi  * Author: Tobin Ehlis <[email protected]>
24*b7893ccfSSadaf Ebrahimi  * Author: Tony Barbour <[email protected]>
25*b7893ccfSSadaf Ebrahimi  */
26*b7893ccfSSadaf Ebrahimi 
27*b7893ccfSSadaf Ebrahimi #ifndef TEST_ENVIRONMENT_H
28*b7893ccfSSadaf Ebrahimi #define TEST_ENVIRONMENT_H
29*b7893ccfSSadaf Ebrahimi 
30*b7893ccfSSadaf Ebrahimi #include "vktestbinding.h"
31*b7893ccfSSadaf Ebrahimi 
32*b7893ccfSSadaf Ebrahimi namespace vk_testing {
33*b7893ccfSSadaf Ebrahimi class Environment : public ::testing::Environment {
34*b7893ccfSSadaf Ebrahimi    public:
35*b7893ccfSSadaf Ebrahimi     Environment();
36*b7893ccfSSadaf Ebrahimi 
37*b7893ccfSSadaf Ebrahimi     bool parse_args(int argc, char **argv);
38*b7893ccfSSadaf Ebrahimi 
39*b7893ccfSSadaf Ebrahimi     virtual void SetUp();
40*b7893ccfSSadaf Ebrahimi     virtual void TearDown();
41*b7893ccfSSadaf Ebrahimi 
devices()42*b7893ccfSSadaf Ebrahimi     const std::vector<Device *> &devices() { return devs_; }
default_device()43*b7893ccfSSadaf Ebrahimi     Device &default_device() { return *(devs_[default_dev_]); }
get_instance()44*b7893ccfSSadaf Ebrahimi     VkInstance get_instance() { return inst; }
45*b7893ccfSSadaf Ebrahimi     VkPhysicalDevice gpus[16];
46*b7893ccfSSadaf Ebrahimi 
47*b7893ccfSSadaf Ebrahimi    private:
48*b7893ccfSSadaf Ebrahimi     VkApplicationInfo app_;
49*b7893ccfSSadaf Ebrahimi     uint32_t default_dev_;
50*b7893ccfSSadaf Ebrahimi     VkInstance inst;
51*b7893ccfSSadaf Ebrahimi 
52*b7893ccfSSadaf Ebrahimi     std::vector<Device *> devs_;
53*b7893ccfSSadaf Ebrahimi };
54*b7893ccfSSadaf Ebrahimi }  // namespace vk_testing
55*b7893ccfSSadaf Ebrahimi #endif  // TEST_ENVIRONMENT_H
56