OSDN Git Service

Fix packed headers attribute test in vaCreateConfig()
[android-x86/hardware-intel-common-vaapi.git] / test / i965_avce_test_common.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 "i965_avce_test_common.h"
26 #include "i965_test_environment.h"
27
28 namespace AVC {
29 namespace Encode {
30
31 /**
32  * This is similar to i965_validate_config(...) in i965_drv_video.c
33  * except that there are a few other checks in regards to HW support
34  * expectations.
35  */
36 VAStatus CheckSupported(VAProfile profile, VAEntrypoint entrypoint)
37 {
38     I965TestEnvironment *env(I965TestEnvironment::instance());
39     EXPECT_PTR(env);
40
41     struct i965_driver_data *i965(*env);
42     EXPECT_PTR(i965);
43
44     switch(profile) {
45     case VAProfileH264ConstrainedBaseline:
46     case VAProfileH264Main:
47     case VAProfileH264High:
48         if (entrypoint == VAEntrypointEncSlice) {
49             if (HAS_H264_ENCODING(i965)) {
50                 return VA_STATUS_SUCCESS;
51             }
52         } else if (entrypoint == VAEntrypointEncSliceLP) {
53             if (IS_SKL(i965->intel.device_info)) {
54                 return VA_STATUS_SUCCESS;
55             }
56             if (HAS_LP_H264_ENCODING(i965)) {
57                 return VA_STATUS_SUCCESS;
58             }
59         } else if (entrypoint == VAEntrypointFEI) {
60             if (IS_SKL(i965->intel.device_info)) {
61                 return VA_STATUS_SUCCESS;
62             }
63             if (HAS_FEI_H264_ENCODING(i965)) {
64                 return VA_STATUS_SUCCESS;
65             }
66         } else if (entrypoint == VAEntrypointStats) {
67             if (IS_SKL(i965->intel.device_info)) {
68                 return VA_STATUS_SUCCESS;
69             }
70             if (HAS_H264_PREENC(i965)) {
71                 return VA_STATUS_SUCCESS;
72             }
73         }
74         break;
75
76     case VAProfileH264MultiviewHigh:
77     case VAProfileH264StereoHigh:
78         if (entrypoint == VAEntrypointEncSlice) {
79             if (HAS_H264_MVC_ENCODING(i965)) {
80                 return VA_STATUS_SUCCESS;
81             }
82         }
83         break;
84
85     default:
86         return VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
87     }
88
89     return VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT;
90 }
91
92 bool IsSupported(VAProfile profile, VAEntrypoint entrypoint)
93 {
94     return VA_STATUS_SUCCESS == CheckSupported(profile, entrypoint);
95 }
96
97 } // namespace Encode
98 } // namespace AVC