Home | History | Annotate | Download | only in basic
      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