~misterc/libva/Trunk

« back to all changes in this revision

Viewing changes to libva/test/test_09.c

  • Committer: Austin Yuan
  • Date: 2009-06-13 01:17:46 UTC
  • Revision ID: git-v1:527643827e6589645df6fe2232c2d397f9fe76e9
Fix the issue that all files are moved into a sub-directory libva.

Signed-off-by: Austin Yuan <shengquan.yuan@intel.com>

Show diffs side-by-side

added added

removed removed

Lines of Context:
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        "Create/destroy contexts for all profiles / entrypoints"
26
 
 
27
 
#include "test_common.c"
28
 
 
29
 
void pre()
30
 
{
31
 
    test_init();
32
 
    test_profiles();
33
 
}
34
 
 
35
 
void test()
36
 
{
37
 
    int max_entrypoints;
38
 
    int num_entrypoints;
39
 
    int i, j, k;
40
 
    int config_count = 0;
41
 
    max_entrypoints = vaMaxNumEntrypoints(va_dpy);
42
 
    ASSERT(max_entrypoints > 0);
43
 
    VAEntrypoint *entrypoints = malloc(max_entrypoints * sizeof(VAEntrypoint));
44
 
    ASSERT(entrypoints);
45
 
 
46
 
    VAConfigID *configs = malloc(max_entrypoints * num_profiles * sizeof(VAConfigID));
47
 
    VAContextID *contexts = malloc(max_entrypoints * num_profiles * sizeof(VAContextID));
48
 
 
49
 
    for(i = 0; i < num_profiles; i++)
50
 
    {
51
 
        va_status = vaQueryConfigEntrypoints(va_dpy, profiles[i], entrypoints, &num_entrypoints);
52
 
        ASSERT( VA_STATUS_SUCCESS == va_status );
53
 
        
54
 
        for(j = 0; j < num_entrypoints; j++)
55
 
        {
56
 
            status("vaCreateConfig for %s, %s\n",  profile2string(profiles[i]), entrypoint2string(entrypoints[j]));
57
 
            va_status = vaCreateConfig(va_dpy, profiles[i], entrypoints[j], NULL, 0, &(configs[config_count]));
58
 
            ASSERT( VA_STATUS_SUCCESS == va_status );
59
 
            status("vaCreateConfig returns %08x\n", configs[config_count]);
60
 
            config_count++;
61
 
        }
62
 
    }
63
 
 
64
 
    int width = 352;
65
 
    int height = 288;
66
 
    int surface_count = 4;
67
 
    int total_surfaces = config_count * surface_count;
68
 
    
69
 
    VASurfaceID *surfaces = malloc(total_surfaces * sizeof(VASurfaceID));
70
 
 
71
 
    // TODO: Don't assume VA_RT_FORMAT_YUV420 is supported / needed for each config
72
 
    va_status = vaCreateSurfaces(va_dpy, width, height, VA_RT_FORMAT_YUV420, total_surfaces, surfaces);
73
 
    ASSERT( VA_STATUS_SUCCESS == va_status );
74
 
    
75
 
    for(i = 0; i < config_count; i++)
76
 
    {
77
 
        status("vaCreateContext with config %08x\n", configs[i]);
78
 
        int flags = 0;
79
 
        va_status = vaCreateContext( va_dpy, configs[i], width, height, flags, surfaces + i*surface_count, surface_count, &contexts[i] );
80
 
        ASSERT( VA_STATUS_SUCCESS == va_status );
81
 
    }
82
 
 
83
 
    for(i = 0; i < config_count; i++)
84
 
    {
85
 
        status("vaDestroyContext for context %08x\n", contexts[i]);
86
 
        va_status = vaDestroyContext( va_dpy, contexts[i] );
87
 
        ASSERT( VA_STATUS_SUCCESS == va_status );
88
 
    }
89
 
 
90
 
    for(i = 0; i < config_count; i++)
91
 
    {
92
 
        status("vaDestroyConfig for config %08x\n", configs[i]);
93
 
        va_status = vaDestroyConfig( va_dpy, configs[i] );
94
 
        ASSERT( VA_STATUS_SUCCESS == va_status );
95
 
    }
96
 
    
97
 
    va_status = vaDestroySurfaces(va_dpy, surfaces, total_surfaces);
98
 
    ASSERT( VA_STATUS_SUCCESS == va_status );
99
 
    
100
 
    free(contexts);
101
 
    free(configs);
102
 
    free(surfaces);
103
 
    free(entrypoints);
104
 
}
105
 
 
106
 
void post()
107
 
{
108
 
    test_terminate();
109
 
}