Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  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.