1 /* 2 * Copyright (c) 2007 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 #define TEST_DESCRIPTION "Get config attributes from configs" 26 27 #include "test_common.c" 28 29 int max_entrypoints; 30 VAEntrypoint *entrypoints; 31 32 VAConfigID *configs; 33 int config_count = 0; 34 35 36 37 void pre() 38 { 39 int i, j, k; 40 41 test_init(); 42 test_profiles(); 43 44 max_entrypoints = vaMaxNumEntrypoints(va_dpy); 45 ASSERT(max_entrypoints > 0); 46 entrypoints = malloc(max_entrypoints * sizeof(VAEntrypoint)); 47 ASSERT(entrypoints); 48 49 configs = malloc(max_entrypoints * num_profiles * sizeof(VAConfigID)); 50 ASSERT(configs); 51 52 // Create configs 53 for(i = 0; i < num_profiles; i++) 54 { 55 int num_entrypoints; 56 va_status = vaQueryConfigEntrypoints(va_dpy, profiles[i], entrypoints, &num_entrypoints); 57 ASSERT( VA_STATUS_SUCCESS == va_status ); 58 59 for(j = 0; j < num_entrypoints; j++) 60 { 61 va_status = vaCreateConfig(va_dpy, profiles[i], entrypoints[j], NULL, 0, &(configs[config_count])); 62 ASSERT( VA_STATUS_SUCCESS == va_status ); 63 config_count++; 64 } 65 } 66 } 67 68 void test() 69 { 70 int i, j, k; 71 int max_attribs; 72 73 max_attribs = vaMaxNumConfigAttributes(va_dpy); 74 ASSERT(max_attribs > 0); 75 76 VAConfigAttrib *attrib_list = malloc(max_attribs * sizeof(VAConfigAttrib)); 77 78 config_count = 0; 79 for(i = 0; i < num_profiles; i++) 80 { 81 int num_entrypoints; 82 83 va_status = vaQueryConfigEntrypoints(va_dpy, profiles[i], entrypoints, &num_entrypoints); 84 ASSERT( VA_STATUS_SUCCESS == va_status ); 85 for(j = 0; j < num_entrypoints; j++) 86 { 87 VAProfile profile= -1; 88 VAEntrypoint entrypoint = -1; 89 int num_attribs = -1; 90 91 status("Checking vaQueryConfigAttributes for %s, %s\n", profile2string(profiles[i]), entrypoint2string(entrypoints[j])); 92 memset(attrib_list, 0xff, max_attribs * sizeof(VAConfigAttrib)); 93 94 va_status = vaQueryConfigAttributes(va_dpy, configs[config_count], &profile, &entrypoint, attrib_list, &num_attribs); 95 config_count++; 96 ASSERT( VA_STATUS_SUCCESS == va_status ); 97 ASSERT( profile == profiles[i] ); 98 ASSERT( entrypoint == entrypoints[j] ); 99 ASSERT( num_attribs >= 0 ); 100 for(k = 0; k < num_attribs; k++) 101 { 102 status(" %d -> %08x\n", attrib_list[k].type, attrib_list[k].value); 103 ASSERT(attrib_list[k].value != VA_ATTRIB_NOT_SUPPORTED); 104 } 105 } 106 } 107 108 free(attrib_list); 109 } 110 111 void post() 112 { 113 int i; 114 for(i = 0; i < config_count; i++) 115 { 116 va_status = vaDestroyConfig( va_dpy, configs[i] ); 117 ASSERT( VA_STATUS_SUCCESS == va_status ); 118 } 119 120 free(configs); 121 free(entrypoints); 122 test_terminate(); 123 } 124