OSDN Git Service

intel-vaapi-driver 1.8.1.pre1
[android-x86/hardware-intel-common-vaapi.git] / test / i965_chipset_test.cpp
1 /*
2  * Copyright (C) 2016 Intel Corporation. All Rights Reserved.
3  *
4  * Permission is hereby granted, free of charge, to any person obtaining a
5  * copy of this software and associated documentation files (the
6  * "Software"), to deal in the Software without restriction, including
7  * without limitation the rights to use, copy, modify, merge, publish,
8  * distribute, sub license, and/or sell copies of the Software, and to
9  * permit persons to whom the Software is furnished to do so, subject to
10  * the following conditions:
11  *
12  * The above copyright notice and this permission notice (including the
13  * next paragraph) shall be included in all copies or substantial portions
14  * of the Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
17  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
19  * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
20  * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23  */
24
25 #include "test.h"
26 #include "i965_internal_decl.h"
27
28 #include <iostream>
29 #include <set>
30 #include <string>
31 #include <vector>
32
33 struct Chipset {
34     int devid;
35     std::string family;
36     std::string device;
37     std::string description;
38
39     bool operator< (const Chipset& other) const
40     {
41         return devid < other.devid;
42     }
43
44     bool operator== (const Chipset& other) const
45     {
46         return devid == other.devid;
47     }
48 };
49
50 std::ostream& operator<<(std::ostream& os, const Chipset& chipset)
51 {
52     os  << std::hex << "(0x" << chipset.devid << std::dec
53         << ", " << chipset.family
54         << ", " << chipset.device
55         << ", " << chipset.description << ")";
56     return os;
57 }
58
59 const std::vector<Chipset>& getChipsets()
60 {
61 #undef CHIPSET
62 #define CHIPSET(id, family, dev, desc) {id, #family, #dev, #desc},
63     static std::vector<Chipset> chipsets = {
64 #include "i965_pciids.h"
65     };
66 #undef CHIPSET
67     return chipsets;
68 }
69
70 TEST(ChipsetTest, Unique)
71 {
72     const std::vector<Chipset>& chipsets = getChipsets();
73     std::set<Chipset> unique;
74     for (const Chipset& chipset : chipsets)
75     {
76         const std::set<Chipset>::const_iterator match = unique.find(chipset);
77         EXPECT_EQ(unique.end(), match)
78             << "duplicate chipsets defined:" << std::endl
79             << "\t" << chipset << std::endl
80             << "\t" << *match;
81         unique.insert(chipset);
82     }
83     EXPECT_EQ(unique.size(), chipsets.size());
84 }
85
86 TEST(ChipsetTest, GetCodecInfo)
87 {
88     for (const Chipset& chipset : getChipsets())
89     {
90         hw_codec_info *info = i965_get_codec_info(chipset.devid);
91         EXPECT_PTR(info)
92             << "no codec info returned for " << chipset;
93     }
94 }
95
96 TEST(ChipsetTest, GetDeviceInfo)
97 {
98     for (const Chipset& chipset : getChipsets())
99     {
100         const intel_device_info *info = i965_get_device_info(chipset.devid);
101         EXPECT_PTR(info)
102             << "no device info returned for " << chipset;
103     }
104 }