xref: /aosp_15_r20/external/virglrenderer/tests/test_virgl_init.c (revision bbecb9d118dfdb95f99bd754f8fa9be01f189df3)
1*bbecb9d1SAndroid Build Coastguard Worker /**************************************************************************
2*bbecb9d1SAndroid Build Coastguard Worker  *
3*bbecb9d1SAndroid Build Coastguard Worker  * Copyright (C) 2014 Red Hat Inc.
4*bbecb9d1SAndroid Build Coastguard Worker  *
5*bbecb9d1SAndroid Build Coastguard Worker  * Permission is hereby granted, free of charge, to any person obtaining a
6*bbecb9d1SAndroid Build Coastguard Worker  * copy of this software and associated documentation files (the "Software"),
7*bbecb9d1SAndroid Build Coastguard Worker  * to deal in the Software without restriction, including without limitation
8*bbecb9d1SAndroid Build Coastguard Worker  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9*bbecb9d1SAndroid Build Coastguard Worker  * and/or sell copies of the Software, and to permit persons to whom the
10*bbecb9d1SAndroid Build Coastguard Worker  * Software is furnished to do so, subject to the following conditions:
11*bbecb9d1SAndroid Build Coastguard Worker  *
12*bbecb9d1SAndroid Build Coastguard Worker  * The above copyright notice and this permission notice shall be included
13*bbecb9d1SAndroid Build Coastguard Worker  * in all copies or substantial portions of the Software.
14*bbecb9d1SAndroid Build Coastguard Worker  *
15*bbecb9d1SAndroid Build Coastguard Worker  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
16*bbecb9d1SAndroid Build Coastguard Worker  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17*bbecb9d1SAndroid Build Coastguard Worker  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
18*bbecb9d1SAndroid Build Coastguard Worker  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
19*bbecb9d1SAndroid Build Coastguard Worker  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
20*bbecb9d1SAndroid Build Coastguard Worker  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
21*bbecb9d1SAndroid Build Coastguard Worker  * OTHER DEALINGS IN THE SOFTWARE.
22*bbecb9d1SAndroid Build Coastguard Worker  *
23*bbecb9d1SAndroid Build Coastguard Worker  **************************************************************************/
24*bbecb9d1SAndroid Build Coastguard Worker 
25*bbecb9d1SAndroid Build Coastguard Worker /*
26*bbecb9d1SAndroid Build Coastguard Worker  * basic library initialisation, teardown, reset
27*bbecb9d1SAndroid Build Coastguard Worker  * and context creation tests.
28*bbecb9d1SAndroid Build Coastguard Worker  */
29*bbecb9d1SAndroid Build Coastguard Worker 
30*bbecb9d1SAndroid Build Coastguard Worker #include <check.h>
31*bbecb9d1SAndroid Build Coastguard Worker #include <stdlib.h>
32*bbecb9d1SAndroid Build Coastguard Worker #include <errno.h>
33*bbecb9d1SAndroid Build Coastguard Worker #include <virglrenderer.h>
34*bbecb9d1SAndroid Build Coastguard Worker #include <gbm.h>
35*bbecb9d1SAndroid Build Coastguard Worker #include <sys/uio.h>
36*bbecb9d1SAndroid Build Coastguard Worker #include "testvirgl.h"
37*bbecb9d1SAndroid Build Coastguard Worker #include "virgl_hw.h"
38*bbecb9d1SAndroid Build Coastguard Worker struct myinfo_struct {
39*bbecb9d1SAndroid Build Coastguard Worker   uint32_t test;
40*bbecb9d1SAndroid Build Coastguard Worker };
41*bbecb9d1SAndroid Build Coastguard Worker 
42*bbecb9d1SAndroid Build Coastguard Worker struct myinfo_struct mystruct;
43*bbecb9d1SAndroid Build Coastguard Worker 
44*bbecb9d1SAndroid Build Coastguard Worker static struct virgl_renderer_callbacks test_cbs;
45*bbecb9d1SAndroid Build Coastguard Worker 
START_TEST(virgl_init_no_cbs)46*bbecb9d1SAndroid Build Coastguard Worker START_TEST(virgl_init_no_cbs)
47*bbecb9d1SAndroid Build Coastguard Worker {
48*bbecb9d1SAndroid Build Coastguard Worker   int ret;
49*bbecb9d1SAndroid Build Coastguard Worker   ret = virgl_renderer_init(&mystruct, 0, NULL);
50*bbecb9d1SAndroid Build Coastguard Worker   ck_assert_int_eq(ret, -1);
51*bbecb9d1SAndroid Build Coastguard Worker }
52*bbecb9d1SAndroid Build Coastguard Worker END_TEST
53*bbecb9d1SAndroid Build Coastguard Worker 
START_TEST(virgl_init_no_cookie)54*bbecb9d1SAndroid Build Coastguard Worker START_TEST(virgl_init_no_cookie)
55*bbecb9d1SAndroid Build Coastguard Worker {
56*bbecb9d1SAndroid Build Coastguard Worker   int ret;
57*bbecb9d1SAndroid Build Coastguard Worker   ret = virgl_renderer_init(NULL, 0, &test_cbs);
58*bbecb9d1SAndroid Build Coastguard Worker   ck_assert_int_eq(ret, -1);
59*bbecb9d1SAndroid Build Coastguard Worker }
60*bbecb9d1SAndroid Build Coastguard Worker END_TEST
61*bbecb9d1SAndroid Build Coastguard Worker 
START_TEST(virgl_init_cbs_wrong_ver)62*bbecb9d1SAndroid Build Coastguard Worker START_TEST(virgl_init_cbs_wrong_ver)
63*bbecb9d1SAndroid Build Coastguard Worker {
64*bbecb9d1SAndroid Build Coastguard Worker   int ret;
65*bbecb9d1SAndroid Build Coastguard Worker   struct virgl_renderer_callbacks testcbs;
66*bbecb9d1SAndroid Build Coastguard Worker   memset(&testcbs, 0, sizeof(testcbs));
67*bbecb9d1SAndroid Build Coastguard Worker   testcbs.version = VIRGL_RENDERER_CALLBACKS_VERSION + 1;
68*bbecb9d1SAndroid Build Coastguard Worker   ret = virgl_renderer_init(&mystruct, 0, &testcbs);
69*bbecb9d1SAndroid Build Coastguard Worker   ck_assert_int_eq(ret, -1);
70*bbecb9d1SAndroid Build Coastguard Worker }
71*bbecb9d1SAndroid Build Coastguard Worker END_TEST
72*bbecb9d1SAndroid Build Coastguard Worker 
START_TEST(virgl_init_cleanup_without_init)73*bbecb9d1SAndroid Build Coastguard Worker START_TEST(virgl_init_cleanup_without_init)
74*bbecb9d1SAndroid Build Coastguard Worker {
75*bbecb9d1SAndroid Build Coastguard Worker   virgl_renderer_cleanup(&mystruct);
76*bbecb9d1SAndroid Build Coastguard Worker }
77*bbecb9d1SAndroid Build Coastguard Worker END_TEST
78*bbecb9d1SAndroid Build Coastguard Worker 
START_TEST(virgl_init_reset_without_init)79*bbecb9d1SAndroid Build Coastguard Worker START_TEST(virgl_init_reset_without_init)
80*bbecb9d1SAndroid Build Coastguard Worker {
81*bbecb9d1SAndroid Build Coastguard Worker   virgl_renderer_reset();
82*bbecb9d1SAndroid Build Coastguard Worker }
83*bbecb9d1SAndroid Build Coastguard Worker END_TEST
84*bbecb9d1SAndroid Build Coastguard Worker 
START_TEST(virgl_init_egl)85*bbecb9d1SAndroid Build Coastguard Worker START_TEST(virgl_init_egl)
86*bbecb9d1SAndroid Build Coastguard Worker {
87*bbecb9d1SAndroid Build Coastguard Worker   int ret;
88*bbecb9d1SAndroid Build Coastguard Worker   test_cbs.version = 1;
89*bbecb9d1SAndroid Build Coastguard Worker   ret = virgl_renderer_init(&mystruct, context_flags, &test_cbs);
90*bbecb9d1SAndroid Build Coastguard Worker   ck_assert_int_eq(ret, 0);
91*bbecb9d1SAndroid Build Coastguard Worker   virgl_renderer_cleanup(&mystruct);
92*bbecb9d1SAndroid Build Coastguard Worker }
93*bbecb9d1SAndroid Build Coastguard Worker 
94*bbecb9d1SAndroid Build Coastguard Worker END_TEST
95*bbecb9d1SAndroid Build Coastguard Worker 
START_TEST(virgl_init_egl_double_init)96*bbecb9d1SAndroid Build Coastguard Worker START_TEST(virgl_init_egl_double_init)
97*bbecb9d1SAndroid Build Coastguard Worker {
98*bbecb9d1SAndroid Build Coastguard Worker   int ret;
99*bbecb9d1SAndroid Build Coastguard Worker   test_cbs.version = 1;
100*bbecb9d1SAndroid Build Coastguard Worker   ret = virgl_renderer_init(&mystruct, context_flags, &test_cbs);
101*bbecb9d1SAndroid Build Coastguard Worker   ck_assert_int_eq(ret, 0);
102*bbecb9d1SAndroid Build Coastguard Worker   ret = virgl_renderer_init(&mystruct, context_flags, &test_cbs);
103*bbecb9d1SAndroid Build Coastguard Worker   ck_assert_int_eq(ret, 0);
104*bbecb9d1SAndroid Build Coastguard Worker   virgl_renderer_cleanup(&mystruct);
105*bbecb9d1SAndroid Build Coastguard Worker }
106*bbecb9d1SAndroid Build Coastguard Worker END_TEST
107*bbecb9d1SAndroid Build Coastguard Worker 
START_TEST(virgl_init_egl_double_init_conflict_args)108*bbecb9d1SAndroid Build Coastguard Worker START_TEST(virgl_init_egl_double_init_conflict_args)
109*bbecb9d1SAndroid Build Coastguard Worker {
110*bbecb9d1SAndroid Build Coastguard Worker   struct myinfo_struct local_struct;
111*bbecb9d1SAndroid Build Coastguard Worker   struct virgl_renderer_callbacks local_cbs;
112*bbecb9d1SAndroid Build Coastguard Worker   int ret;
113*bbecb9d1SAndroid Build Coastguard Worker 
114*bbecb9d1SAndroid Build Coastguard Worker   test_cbs.version = 1;
115*bbecb9d1SAndroid Build Coastguard Worker   ret = virgl_renderer_init(&mystruct, context_flags, &test_cbs);
116*bbecb9d1SAndroid Build Coastguard Worker   ck_assert_int_eq(ret, 0);
117*bbecb9d1SAndroid Build Coastguard Worker 
118*bbecb9d1SAndroid Build Coastguard Worker   ret = virgl_renderer_init(&local_struct, context_flags, &test_cbs);
119*bbecb9d1SAndroid Build Coastguard Worker   ck_assert_int_eq(ret, -EBUSY);
120*bbecb9d1SAndroid Build Coastguard Worker 
121*bbecb9d1SAndroid Build Coastguard Worker   ret = virgl_renderer_init(&mystruct, 0, &test_cbs);
122*bbecb9d1SAndroid Build Coastguard Worker   ck_assert_int_eq(ret, -EBUSY);
123*bbecb9d1SAndroid Build Coastguard Worker 
124*bbecb9d1SAndroid Build Coastguard Worker   memset(&local_cbs, 0, sizeof(local_cbs));
125*bbecb9d1SAndroid Build Coastguard Worker   local_cbs.version = 1;
126*bbecb9d1SAndroid Build Coastguard Worker   ret = virgl_renderer_init(&mystruct, context_flags, &local_cbs);
127*bbecb9d1SAndroid Build Coastguard Worker   ck_assert_int_eq(ret, -EBUSY);
128*bbecb9d1SAndroid Build Coastguard Worker 
129*bbecb9d1SAndroid Build Coastguard Worker   virgl_renderer_cleanup(&mystruct);
130*bbecb9d1SAndroid Build Coastguard Worker }
131*bbecb9d1SAndroid Build Coastguard Worker END_TEST
132*bbecb9d1SAndroid Build Coastguard Worker 
START_TEST(virgl_init_egl_create_ctx)133*bbecb9d1SAndroid Build Coastguard Worker START_TEST(virgl_init_egl_create_ctx)
134*bbecb9d1SAndroid Build Coastguard Worker {
135*bbecb9d1SAndroid Build Coastguard Worker   int ret;
136*bbecb9d1SAndroid Build Coastguard Worker   test_cbs.version = 1;
137*bbecb9d1SAndroid Build Coastguard Worker   ret = virgl_renderer_init(&mystruct, context_flags, &test_cbs);
138*bbecb9d1SAndroid Build Coastguard Worker   ck_assert_int_eq(ret, 0);
139*bbecb9d1SAndroid Build Coastguard Worker   ret = virgl_renderer_context_create(1, strlen("test1"), "test1");
140*bbecb9d1SAndroid Build Coastguard Worker   ck_assert_int_eq(ret, 0);
141*bbecb9d1SAndroid Build Coastguard Worker 
142*bbecb9d1SAndroid Build Coastguard Worker   virgl_renderer_context_destroy(1);
143*bbecb9d1SAndroid Build Coastguard Worker   virgl_renderer_cleanup(&mystruct);
144*bbecb9d1SAndroid Build Coastguard Worker }
145*bbecb9d1SAndroid Build Coastguard Worker END_TEST
146*bbecb9d1SAndroid Build Coastguard Worker 
START_TEST(virgl_init_egl_create_ctx_0)147*bbecb9d1SAndroid Build Coastguard Worker START_TEST(virgl_init_egl_create_ctx_0)
148*bbecb9d1SAndroid Build Coastguard Worker {
149*bbecb9d1SAndroid Build Coastguard Worker   int ret;
150*bbecb9d1SAndroid Build Coastguard Worker 
151*bbecb9d1SAndroid Build Coastguard Worker   test_cbs.version = 1;
152*bbecb9d1SAndroid Build Coastguard Worker   ret = virgl_renderer_init(&mystruct, context_flags, &test_cbs);
153*bbecb9d1SAndroid Build Coastguard Worker   ck_assert_int_eq(ret, 0);
154*bbecb9d1SAndroid Build Coastguard Worker   ret = virgl_renderer_context_create(0, strlen("test1"), "test1");
155*bbecb9d1SAndroid Build Coastguard Worker   ck_assert_int_eq(ret, EINVAL);
156*bbecb9d1SAndroid Build Coastguard Worker 
157*bbecb9d1SAndroid Build Coastguard Worker   virgl_renderer_cleanup(&mystruct);
158*bbecb9d1SAndroid Build Coastguard Worker }
159*bbecb9d1SAndroid Build Coastguard Worker END_TEST
160*bbecb9d1SAndroid Build Coastguard Worker 
START_TEST(virgl_init_egl_destroy_ctx_illegal)161*bbecb9d1SAndroid Build Coastguard Worker START_TEST(virgl_init_egl_destroy_ctx_illegal)
162*bbecb9d1SAndroid Build Coastguard Worker {
163*bbecb9d1SAndroid Build Coastguard Worker   int ret;
164*bbecb9d1SAndroid Build Coastguard Worker   test_cbs.version = 1;
165*bbecb9d1SAndroid Build Coastguard Worker   ret = virgl_renderer_init(&mystruct, context_flags, &test_cbs);
166*bbecb9d1SAndroid Build Coastguard Worker   ck_assert_int_eq(ret, 0);
167*bbecb9d1SAndroid Build Coastguard Worker 
168*bbecb9d1SAndroid Build Coastguard Worker   virgl_renderer_context_destroy(1);
169*bbecb9d1SAndroid Build Coastguard Worker   virgl_renderer_cleanup(&mystruct);
170*bbecb9d1SAndroid Build Coastguard Worker }
171*bbecb9d1SAndroid Build Coastguard Worker END_TEST
172*bbecb9d1SAndroid Build Coastguard Worker 
START_TEST(virgl_init_egl_create_ctx_leak)173*bbecb9d1SAndroid Build Coastguard Worker START_TEST(virgl_init_egl_create_ctx_leak)
174*bbecb9d1SAndroid Build Coastguard Worker {
175*bbecb9d1SAndroid Build Coastguard Worker   testvirgl_init_single_ctx();
176*bbecb9d1SAndroid Build Coastguard Worker 
177*bbecb9d1SAndroid Build Coastguard Worker   /* don't destroy the context - leak it make sure cleanup catches it */
178*bbecb9d1SAndroid Build Coastguard Worker   /*virgl_renderer_context_destroy(1);*/
179*bbecb9d1SAndroid Build Coastguard Worker   virgl_renderer_cleanup(&mystruct);
180*bbecb9d1SAndroid Build Coastguard Worker }
181*bbecb9d1SAndroid Build Coastguard Worker END_TEST
182*bbecb9d1SAndroid Build Coastguard Worker 
START_TEST(virgl_init_egl_create_ctx_create_bind_res)183*bbecb9d1SAndroid Build Coastguard Worker START_TEST(virgl_init_egl_create_ctx_create_bind_res)
184*bbecb9d1SAndroid Build Coastguard Worker {
185*bbecb9d1SAndroid Build Coastguard Worker   int ret;
186*bbecb9d1SAndroid Build Coastguard Worker   struct virgl_renderer_resource_create_args res;
187*bbecb9d1SAndroid Build Coastguard Worker 
188*bbecb9d1SAndroid Build Coastguard Worker   testvirgl_init_simple_1d_resource(&res, 1);
189*bbecb9d1SAndroid Build Coastguard Worker 
190*bbecb9d1SAndroid Build Coastguard Worker   ret = virgl_renderer_resource_create(&res, NULL, 0);
191*bbecb9d1SAndroid Build Coastguard Worker   ck_assert_int_eq(ret, 0);
192*bbecb9d1SAndroid Build Coastguard Worker 
193*bbecb9d1SAndroid Build Coastguard Worker   virgl_renderer_ctx_attach_resource(1, res.handle);
194*bbecb9d1SAndroid Build Coastguard Worker 
195*bbecb9d1SAndroid Build Coastguard Worker   virgl_renderer_ctx_detach_resource(1, res.handle);
196*bbecb9d1SAndroid Build Coastguard Worker 
197*bbecb9d1SAndroid Build Coastguard Worker   virgl_renderer_resource_unref(1);
198*bbecb9d1SAndroid Build Coastguard Worker }
199*bbecb9d1SAndroid Build Coastguard Worker END_TEST
200*bbecb9d1SAndroid Build Coastguard Worker 
START_TEST(virgl_init_egl_create_ctx_create_bind_res_illegal_ctx)201*bbecb9d1SAndroid Build Coastguard Worker START_TEST(virgl_init_egl_create_ctx_create_bind_res_illegal_ctx)
202*bbecb9d1SAndroid Build Coastguard Worker {
203*bbecb9d1SAndroid Build Coastguard Worker   int ret;
204*bbecb9d1SAndroid Build Coastguard Worker   struct virgl_renderer_resource_create_args res;
205*bbecb9d1SAndroid Build Coastguard Worker 
206*bbecb9d1SAndroid Build Coastguard Worker   testvirgl_init_simple_1d_resource(&res, 1);
207*bbecb9d1SAndroid Build Coastguard Worker 
208*bbecb9d1SAndroid Build Coastguard Worker   ret = virgl_renderer_resource_create(&res, NULL, 0);
209*bbecb9d1SAndroid Build Coastguard Worker   ck_assert_int_eq(ret, 0);
210*bbecb9d1SAndroid Build Coastguard Worker 
211*bbecb9d1SAndroid Build Coastguard Worker   virgl_renderer_ctx_attach_resource(2, res.handle);
212*bbecb9d1SAndroid Build Coastguard Worker 
213*bbecb9d1SAndroid Build Coastguard Worker   virgl_renderer_resource_unref(1);
214*bbecb9d1SAndroid Build Coastguard Worker }
215*bbecb9d1SAndroid Build Coastguard Worker END_TEST
216*bbecb9d1SAndroid Build Coastguard Worker 
217*bbecb9d1SAndroid Build Coastguard Worker 
START_TEST(virgl_init_egl_create_ctx_create_bind_res_illegal_res)218*bbecb9d1SAndroid Build Coastguard Worker START_TEST(virgl_init_egl_create_ctx_create_bind_res_illegal_res)
219*bbecb9d1SAndroid Build Coastguard Worker {
220*bbecb9d1SAndroid Build Coastguard Worker   int ret;
221*bbecb9d1SAndroid Build Coastguard Worker   struct virgl_renderer_resource_create_args res;
222*bbecb9d1SAndroid Build Coastguard Worker 
223*bbecb9d1SAndroid Build Coastguard Worker   testvirgl_init_simple_1d_resource(&res, 1);
224*bbecb9d1SAndroid Build Coastguard Worker 
225*bbecb9d1SAndroid Build Coastguard Worker   ret = virgl_renderer_resource_create(&res, NULL, 0);
226*bbecb9d1SAndroid Build Coastguard Worker   ck_assert_int_eq(ret, 0);
227*bbecb9d1SAndroid Build Coastguard Worker 
228*bbecb9d1SAndroid Build Coastguard Worker   virgl_renderer_ctx_attach_resource(1, 2);
229*bbecb9d1SAndroid Build Coastguard Worker 
230*bbecb9d1SAndroid Build Coastguard Worker   virgl_renderer_resource_unref(1);
231*bbecb9d1SAndroid Build Coastguard Worker }
232*bbecb9d1SAndroid Build Coastguard Worker END_TEST
233*bbecb9d1SAndroid Build Coastguard Worker 
START_TEST(virgl_init_egl_create_ctx_create_unbind_no_bind)234*bbecb9d1SAndroid Build Coastguard Worker START_TEST(virgl_init_egl_create_ctx_create_unbind_no_bind)
235*bbecb9d1SAndroid Build Coastguard Worker {
236*bbecb9d1SAndroid Build Coastguard Worker   int ret;
237*bbecb9d1SAndroid Build Coastguard Worker   struct virgl_renderer_resource_create_args res;
238*bbecb9d1SAndroid Build Coastguard Worker 
239*bbecb9d1SAndroid Build Coastguard Worker   testvirgl_init_simple_1d_resource(&res, 1);
240*bbecb9d1SAndroid Build Coastguard Worker 
241*bbecb9d1SAndroid Build Coastguard Worker   ret = virgl_renderer_resource_create(&res, NULL, 0);
242*bbecb9d1SAndroid Build Coastguard Worker   ck_assert_int_eq(ret, 0);
243*bbecb9d1SAndroid Build Coastguard Worker 
244*bbecb9d1SAndroid Build Coastguard Worker   virgl_renderer_ctx_detach_resource(1, res.handle);
245*bbecb9d1SAndroid Build Coastguard Worker 
246*bbecb9d1SAndroid Build Coastguard Worker   virgl_renderer_resource_unref(1);
247*bbecb9d1SAndroid Build Coastguard Worker }
248*bbecb9d1SAndroid Build Coastguard Worker END_TEST
249*bbecb9d1SAndroid Build Coastguard Worker 
START_TEST(virgl_init_egl_create_ctx_create_unbind_illegal_ctx)250*bbecb9d1SAndroid Build Coastguard Worker START_TEST(virgl_init_egl_create_ctx_create_unbind_illegal_ctx)
251*bbecb9d1SAndroid Build Coastguard Worker {
252*bbecb9d1SAndroid Build Coastguard Worker   int ret;
253*bbecb9d1SAndroid Build Coastguard Worker   struct virgl_renderer_resource_create_args res;
254*bbecb9d1SAndroid Build Coastguard Worker 
255*bbecb9d1SAndroid Build Coastguard Worker   testvirgl_init_simple_1d_resource(&res, 1);
256*bbecb9d1SAndroid Build Coastguard Worker 
257*bbecb9d1SAndroid Build Coastguard Worker   ret = virgl_renderer_resource_create(&res, NULL, 0);
258*bbecb9d1SAndroid Build Coastguard Worker   ck_assert_int_eq(ret, 0);
259*bbecb9d1SAndroid Build Coastguard Worker 
260*bbecb9d1SAndroid Build Coastguard Worker   virgl_renderer_ctx_detach_resource(2, res.handle);
261*bbecb9d1SAndroid Build Coastguard Worker 
262*bbecb9d1SAndroid Build Coastguard Worker   virgl_renderer_resource_unref(1);
263*bbecb9d1SAndroid Build Coastguard Worker }
264*bbecb9d1SAndroid Build Coastguard Worker END_TEST
265*bbecb9d1SAndroid Build Coastguard Worker 
266*bbecb9d1SAndroid Build Coastguard Worker 
START_TEST(virgl_init_egl_create_ctx_create_bind_res_leak)267*bbecb9d1SAndroid Build Coastguard Worker START_TEST(virgl_init_egl_create_ctx_create_bind_res_leak)
268*bbecb9d1SAndroid Build Coastguard Worker {
269*bbecb9d1SAndroid Build Coastguard Worker   int ret;
270*bbecb9d1SAndroid Build Coastguard Worker   struct virgl_renderer_resource_create_args res;
271*bbecb9d1SAndroid Build Coastguard Worker 
272*bbecb9d1SAndroid Build Coastguard Worker   testvirgl_init_single_ctx_nr();
273*bbecb9d1SAndroid Build Coastguard Worker 
274*bbecb9d1SAndroid Build Coastguard Worker   testvirgl_init_simple_1d_resource(&res, 1);
275*bbecb9d1SAndroid Build Coastguard Worker 
276*bbecb9d1SAndroid Build Coastguard Worker   ret = virgl_renderer_resource_create(&res, NULL, 0);
277*bbecb9d1SAndroid Build Coastguard Worker   ck_assert_int_eq(ret, 0);
278*bbecb9d1SAndroid Build Coastguard Worker 
279*bbecb9d1SAndroid Build Coastguard Worker   virgl_renderer_ctx_attach_resource(1, res.handle);
280*bbecb9d1SAndroid Build Coastguard Worker 
281*bbecb9d1SAndroid Build Coastguard Worker   /*virgl_renderer_ctx_detach_resource(1, res.handle);*/
282*bbecb9d1SAndroid Build Coastguard Worker 
283*bbecb9d1SAndroid Build Coastguard Worker   /*virgl_renderer_resource_unref(1);*/
284*bbecb9d1SAndroid Build Coastguard Worker   /* don't detach or destroy resource - it should still get cleanedup */
285*bbecb9d1SAndroid Build Coastguard Worker   testvirgl_fini_single_ctx();
286*bbecb9d1SAndroid Build Coastguard Worker }
287*bbecb9d1SAndroid Build Coastguard Worker END_TEST
288*bbecb9d1SAndroid Build Coastguard Worker 
START_TEST(virgl_init_egl_create_ctx_reset)289*bbecb9d1SAndroid Build Coastguard Worker START_TEST(virgl_init_egl_create_ctx_reset)
290*bbecb9d1SAndroid Build Coastguard Worker {
291*bbecb9d1SAndroid Build Coastguard Worker   int ret;
292*bbecb9d1SAndroid Build Coastguard Worker 
293*bbecb9d1SAndroid Build Coastguard Worker   ret = testvirgl_init_single_ctx();
294*bbecb9d1SAndroid Build Coastguard Worker   ck_assert_int_eq(ret, 0);
295*bbecb9d1SAndroid Build Coastguard Worker 
296*bbecb9d1SAndroid Build Coastguard Worker   virgl_renderer_reset();
297*bbecb9d1SAndroid Build Coastguard Worker 
298*bbecb9d1SAndroid Build Coastguard Worker   /* reset should have destroyed the context */
299*bbecb9d1SAndroid Build Coastguard Worker   ret = virgl_renderer_context_create(1, strlen("test1"), "test1");
300*bbecb9d1SAndroid Build Coastguard Worker   ck_assert_int_eq(ret, 0);
301*bbecb9d1SAndroid Build Coastguard Worker   virgl_renderer_cleanup(&mystruct);
302*bbecb9d1SAndroid Build Coastguard Worker }
303*bbecb9d1SAndroid Build Coastguard Worker END_TEST
304*bbecb9d1SAndroid Build Coastguard Worker 
START_TEST(virgl_init_get_caps_set0)305*bbecb9d1SAndroid Build Coastguard Worker START_TEST(virgl_init_get_caps_set0)
306*bbecb9d1SAndroid Build Coastguard Worker {
307*bbecb9d1SAndroid Build Coastguard Worker   int ret;
308*bbecb9d1SAndroid Build Coastguard Worker   uint32_t max_ver, max_size;
309*bbecb9d1SAndroid Build Coastguard Worker 
310*bbecb9d1SAndroid Build Coastguard Worker   test_cbs.version = 1;
311*bbecb9d1SAndroid Build Coastguard Worker   ret = virgl_renderer_init(&mystruct, context_flags, &test_cbs);
312*bbecb9d1SAndroid Build Coastguard Worker   ck_assert_int_eq(ret, 0);
313*bbecb9d1SAndroid Build Coastguard Worker 
314*bbecb9d1SAndroid Build Coastguard Worker   virgl_renderer_get_cap_set(0, &max_ver, &max_size);
315*bbecb9d1SAndroid Build Coastguard Worker   ck_assert_int_eq(max_ver, 0);
316*bbecb9d1SAndroid Build Coastguard Worker   ck_assert_int_eq(max_size, 0);
317*bbecb9d1SAndroid Build Coastguard Worker 
318*bbecb9d1SAndroid Build Coastguard Worker   virgl_renderer_cleanup(&mystruct);
319*bbecb9d1SAndroid Build Coastguard Worker }
320*bbecb9d1SAndroid Build Coastguard Worker END_TEST
321*bbecb9d1SAndroid Build Coastguard Worker 
START_TEST(virgl_init_get_caps_set1)322*bbecb9d1SAndroid Build Coastguard Worker START_TEST(virgl_init_get_caps_set1)
323*bbecb9d1SAndroid Build Coastguard Worker {
324*bbecb9d1SAndroid Build Coastguard Worker   int ret;
325*bbecb9d1SAndroid Build Coastguard Worker   uint32_t max_ver, max_size;
326*bbecb9d1SAndroid Build Coastguard Worker   void *caps;
327*bbecb9d1SAndroid Build Coastguard Worker   test_cbs.version = 1;
328*bbecb9d1SAndroid Build Coastguard Worker   ret = virgl_renderer_init(&mystruct, context_flags, &test_cbs);
329*bbecb9d1SAndroid Build Coastguard Worker   ck_assert_int_eq(ret, 0);
330*bbecb9d1SAndroid Build Coastguard Worker 
331*bbecb9d1SAndroid Build Coastguard Worker   virgl_renderer_get_cap_set(1, &max_ver, &max_size);
332*bbecb9d1SAndroid Build Coastguard Worker   ck_assert_int_ge(max_ver, 1);
333*bbecb9d1SAndroid Build Coastguard Worker   ck_assert_int_ne(max_size, 0);
334*bbecb9d1SAndroid Build Coastguard Worker   ck_assert_int_ge(max_size, sizeof(struct virgl_caps_v1));
335*bbecb9d1SAndroid Build Coastguard Worker 
336*bbecb9d1SAndroid Build Coastguard Worker   caps = malloc(max_size);
337*bbecb9d1SAndroid Build Coastguard Worker 
338*bbecb9d1SAndroid Build Coastguard Worker   virgl_renderer_fill_caps(0, 0, caps);
339*bbecb9d1SAndroid Build Coastguard Worker 
340*bbecb9d1SAndroid Build Coastguard Worker   free(caps);
341*bbecb9d1SAndroid Build Coastguard Worker   virgl_renderer_cleanup(&mystruct);
342*bbecb9d1SAndroid Build Coastguard Worker }
343*bbecb9d1SAndroid Build Coastguard Worker END_TEST
344*bbecb9d1SAndroid Build Coastguard Worker 
START_TEST(virgl_init_get_caps_null)345*bbecb9d1SAndroid Build Coastguard Worker START_TEST(virgl_init_get_caps_null)
346*bbecb9d1SAndroid Build Coastguard Worker {
347*bbecb9d1SAndroid Build Coastguard Worker   int ret;
348*bbecb9d1SAndroid Build Coastguard Worker   uint32_t max_ver, max_size;
349*bbecb9d1SAndroid Build Coastguard Worker 
350*bbecb9d1SAndroid Build Coastguard Worker   test_cbs.version = 1;
351*bbecb9d1SAndroid Build Coastguard Worker   ret = virgl_renderer_init(&mystruct, context_flags, &test_cbs);
352*bbecb9d1SAndroid Build Coastguard Worker   ck_assert_int_eq(ret, 0);
353*bbecb9d1SAndroid Build Coastguard Worker 
354*bbecb9d1SAndroid Build Coastguard Worker   virgl_renderer_get_cap_set(1, &max_ver, &max_size);
355*bbecb9d1SAndroid Build Coastguard Worker   ck_assert_int_ge(max_ver, 1);
356*bbecb9d1SAndroid Build Coastguard Worker   ck_assert_int_ne(max_size, 0);
357*bbecb9d1SAndroid Build Coastguard Worker   ck_assert_int_ge(max_size, sizeof(struct virgl_caps_v1));
358*bbecb9d1SAndroid Build Coastguard Worker 
359*bbecb9d1SAndroid Build Coastguard Worker   virgl_renderer_fill_caps(0, 0, NULL);
360*bbecb9d1SAndroid Build Coastguard Worker 
361*bbecb9d1SAndroid Build Coastguard Worker   virgl_renderer_cleanup(&mystruct);
362*bbecb9d1SAndroid Build Coastguard Worker }
363*bbecb9d1SAndroid Build Coastguard Worker END_TEST
364*bbecb9d1SAndroid Build Coastguard Worker 
START_TEST(virgl_test_get_resource_info)365*bbecb9d1SAndroid Build Coastguard Worker START_TEST(virgl_test_get_resource_info)
366*bbecb9d1SAndroid Build Coastguard Worker {
367*bbecb9d1SAndroid Build Coastguard Worker   int ret;
368*bbecb9d1SAndroid Build Coastguard Worker   struct virgl_renderer_resource_create_args res;
369*bbecb9d1SAndroid Build Coastguard Worker   struct virgl_renderer_resource_info info;
370*bbecb9d1SAndroid Build Coastguard Worker 
371*bbecb9d1SAndroid Build Coastguard Worker   testvirgl_init_simple_2d_resource(&res, 1);
372*bbecb9d1SAndroid Build Coastguard Worker   res.format = VIRGL_FORMAT_B8G8R8X8_UNORM;
373*bbecb9d1SAndroid Build Coastguard Worker   ret = virgl_renderer_resource_create(&res, NULL, 0);
374*bbecb9d1SAndroid Build Coastguard Worker   ck_assert_int_eq(ret, 0);
375*bbecb9d1SAndroid Build Coastguard Worker 
376*bbecb9d1SAndroid Build Coastguard Worker   virgl_renderer_ctx_attach_resource(1, res.handle);
377*bbecb9d1SAndroid Build Coastguard Worker 
378*bbecb9d1SAndroid Build Coastguard Worker   ret = virgl_renderer_resource_get_info(res.handle, &info);
379*bbecb9d1SAndroid Build Coastguard Worker   ck_assert_int_eq(ret, 0);
380*bbecb9d1SAndroid Build Coastguard Worker 
381*bbecb9d1SAndroid Build Coastguard Worker   ck_assert(info.drm_fourcc == GBM_FORMAT_ABGR8888 ||
382*bbecb9d1SAndroid Build Coastguard Worker             info.drm_fourcc == GBM_FORMAT_XBGR8888 ||
383*bbecb9d1SAndroid Build Coastguard Worker             info.drm_fourcc == GBM_FORMAT_ARGB8888 ||
384*bbecb9d1SAndroid Build Coastguard Worker             info.drm_fourcc == GBM_FORMAT_XRGB8888);
385*bbecb9d1SAndroid Build Coastguard Worker   ck_assert_int_eq(info.virgl_format, res.format);
386*bbecb9d1SAndroid Build Coastguard Worker   ck_assert_int_eq(res.width, info.width);
387*bbecb9d1SAndroid Build Coastguard Worker   ck_assert_int_eq(res.height, info.height);
388*bbecb9d1SAndroid Build Coastguard Worker   ck_assert_int_eq(res.depth, info.depth);
389*bbecb9d1SAndroid Build Coastguard Worker   ck_assert_int_eq(res.flags, info.flags);
390*bbecb9d1SAndroid Build Coastguard Worker   virgl_renderer_ctx_detach_resource(1, res.handle);
391*bbecb9d1SAndroid Build Coastguard Worker 
392*bbecb9d1SAndroid Build Coastguard Worker   virgl_renderer_resource_unref(1);
393*bbecb9d1SAndroid Build Coastguard Worker }
394*bbecb9d1SAndroid Build Coastguard Worker END_TEST
395*bbecb9d1SAndroid Build Coastguard Worker 
START_TEST(virgl_test_get_resource_info_no_info)396*bbecb9d1SAndroid Build Coastguard Worker START_TEST(virgl_test_get_resource_info_no_info)
397*bbecb9d1SAndroid Build Coastguard Worker {
398*bbecb9d1SAndroid Build Coastguard Worker   int ret;
399*bbecb9d1SAndroid Build Coastguard Worker   struct virgl_renderer_resource_create_args res;
400*bbecb9d1SAndroid Build Coastguard Worker 
401*bbecb9d1SAndroid Build Coastguard Worker   testvirgl_init_simple_1d_resource(&res, 1);
402*bbecb9d1SAndroid Build Coastguard Worker 
403*bbecb9d1SAndroid Build Coastguard Worker   ret = virgl_renderer_resource_create(&res, NULL, 0);
404*bbecb9d1SAndroid Build Coastguard Worker   ck_assert_int_eq(ret, 0);
405*bbecb9d1SAndroid Build Coastguard Worker 
406*bbecb9d1SAndroid Build Coastguard Worker   virgl_renderer_ctx_attach_resource(1, res.handle);
407*bbecb9d1SAndroid Build Coastguard Worker 
408*bbecb9d1SAndroid Build Coastguard Worker   ret = virgl_renderer_resource_get_info(1, NULL);
409*bbecb9d1SAndroid Build Coastguard Worker   ck_assert_int_eq(ret, EINVAL);
410*bbecb9d1SAndroid Build Coastguard Worker 
411*bbecb9d1SAndroid Build Coastguard Worker   virgl_renderer_ctx_detach_resource(1, res.handle);
412*bbecb9d1SAndroid Build Coastguard Worker   virgl_renderer_resource_unref(1);
413*bbecb9d1SAndroid Build Coastguard Worker }
414*bbecb9d1SAndroid Build Coastguard Worker END_TEST
415*bbecb9d1SAndroid Build Coastguard Worker 
416*bbecb9d1SAndroid Build Coastguard Worker 
START_TEST(virgl_test_get_resource_info_no_res)417*bbecb9d1SAndroid Build Coastguard Worker START_TEST(virgl_test_get_resource_info_no_res)
418*bbecb9d1SAndroid Build Coastguard Worker {
419*bbecb9d1SAndroid Build Coastguard Worker   int ret;
420*bbecb9d1SAndroid Build Coastguard Worker   struct virgl_renderer_resource_info info;
421*bbecb9d1SAndroid Build Coastguard Worker 
422*bbecb9d1SAndroid Build Coastguard Worker   ret = virgl_renderer_resource_get_info(1, &info);
423*bbecb9d1SAndroid Build Coastguard Worker   ck_assert_int_eq(ret, EINVAL);
424*bbecb9d1SAndroid Build Coastguard Worker 
425*bbecb9d1SAndroid Build Coastguard Worker   virgl_renderer_resource_unref(1);
426*bbecb9d1SAndroid Build Coastguard Worker }
427*bbecb9d1SAndroid Build Coastguard Worker END_TEST
428*bbecb9d1SAndroid Build Coastguard Worker 
START_TEST(virgl_init_egl_create_ctx_create_attach_res)429*bbecb9d1SAndroid Build Coastguard Worker START_TEST(virgl_init_egl_create_ctx_create_attach_res)
430*bbecb9d1SAndroid Build Coastguard Worker {
431*bbecb9d1SAndroid Build Coastguard Worker   int ret;
432*bbecb9d1SAndroid Build Coastguard Worker   struct virgl_renderer_resource_create_args res;
433*bbecb9d1SAndroid Build Coastguard Worker   struct iovec iovs[1];
434*bbecb9d1SAndroid Build Coastguard Worker   struct iovec *iovs_r;
435*bbecb9d1SAndroid Build Coastguard Worker   int num_r;
436*bbecb9d1SAndroid Build Coastguard Worker 
437*bbecb9d1SAndroid Build Coastguard Worker   testvirgl_init_simple_1d_resource(&res, 1);
438*bbecb9d1SAndroid Build Coastguard Worker 
439*bbecb9d1SAndroid Build Coastguard Worker   ret = virgl_renderer_resource_create(&res, NULL, 0);
440*bbecb9d1SAndroid Build Coastguard Worker   ck_assert_int_eq(ret, 0);
441*bbecb9d1SAndroid Build Coastguard Worker 
442*bbecb9d1SAndroid Build Coastguard Worker   iovs[0].iov_base = malloc(4096);
443*bbecb9d1SAndroid Build Coastguard Worker   iovs[0].iov_len = 4096;
444*bbecb9d1SAndroid Build Coastguard Worker 
445*bbecb9d1SAndroid Build Coastguard Worker   ret = virgl_renderer_resource_attach_iov(1, iovs, 1);
446*bbecb9d1SAndroid Build Coastguard Worker   ck_assert_int_eq(ret, 0);
447*bbecb9d1SAndroid Build Coastguard Worker 
448*bbecb9d1SAndroid Build Coastguard Worker   virgl_renderer_resource_detach_iov(1, &iovs_r, &num_r);
449*bbecb9d1SAndroid Build Coastguard Worker 
450*bbecb9d1SAndroid Build Coastguard Worker   free(iovs[0].iov_base);
451*bbecb9d1SAndroid Build Coastguard Worker   virgl_renderer_resource_unref(1);
452*bbecb9d1SAndroid Build Coastguard Worker }
453*bbecb9d1SAndroid Build Coastguard Worker END_TEST
454*bbecb9d1SAndroid Build Coastguard Worker 
START_TEST(virgl_init_egl_create_ctx_create_attach_res_detach_no_iovs)455*bbecb9d1SAndroid Build Coastguard Worker START_TEST(virgl_init_egl_create_ctx_create_attach_res_detach_no_iovs)
456*bbecb9d1SAndroid Build Coastguard Worker {
457*bbecb9d1SAndroid Build Coastguard Worker   int ret;
458*bbecb9d1SAndroid Build Coastguard Worker   struct virgl_renderer_resource_create_args res;
459*bbecb9d1SAndroid Build Coastguard Worker   struct iovec iovs[1];
460*bbecb9d1SAndroid Build Coastguard Worker   int num_r;
461*bbecb9d1SAndroid Build Coastguard Worker 
462*bbecb9d1SAndroid Build Coastguard Worker   testvirgl_init_simple_1d_resource(&res, 1);
463*bbecb9d1SAndroid Build Coastguard Worker 
464*bbecb9d1SAndroid Build Coastguard Worker   ret = virgl_renderer_resource_create(&res, NULL, 0);
465*bbecb9d1SAndroid Build Coastguard Worker   ck_assert_int_eq(ret, 0);
466*bbecb9d1SAndroid Build Coastguard Worker 
467*bbecb9d1SAndroid Build Coastguard Worker   iovs[0].iov_base = malloc(4096);
468*bbecb9d1SAndroid Build Coastguard Worker   iovs[0].iov_len = 4096;
469*bbecb9d1SAndroid Build Coastguard Worker 
470*bbecb9d1SAndroid Build Coastguard Worker   ret = virgl_renderer_resource_attach_iov(1, iovs, 1);
471*bbecb9d1SAndroid Build Coastguard Worker   ck_assert_int_eq(ret, 0);
472*bbecb9d1SAndroid Build Coastguard Worker 
473*bbecb9d1SAndroid Build Coastguard Worker   virgl_renderer_resource_detach_iov(1, NULL, &num_r);
474*bbecb9d1SAndroid Build Coastguard Worker 
475*bbecb9d1SAndroid Build Coastguard Worker   free(iovs[0].iov_base);
476*bbecb9d1SAndroid Build Coastguard Worker   virgl_renderer_resource_unref(1);
477*bbecb9d1SAndroid Build Coastguard Worker }
478*bbecb9d1SAndroid Build Coastguard Worker END_TEST
479*bbecb9d1SAndroid Build Coastguard Worker 
START_TEST(virgl_init_egl_create_ctx_create_attach_res_illegal_res)480*bbecb9d1SAndroid Build Coastguard Worker START_TEST(virgl_init_egl_create_ctx_create_attach_res_illegal_res)
481*bbecb9d1SAndroid Build Coastguard Worker {
482*bbecb9d1SAndroid Build Coastguard Worker   int ret;
483*bbecb9d1SAndroid Build Coastguard Worker   struct iovec iovs[1];
484*bbecb9d1SAndroid Build Coastguard Worker 
485*bbecb9d1SAndroid Build Coastguard Worker   test_cbs.version = 1;
486*bbecb9d1SAndroid Build Coastguard Worker   ret = virgl_renderer_init(&mystruct, context_flags, &test_cbs);
487*bbecb9d1SAndroid Build Coastguard Worker   ck_assert_int_eq(ret, 0);
488*bbecb9d1SAndroid Build Coastguard Worker 
489*bbecb9d1SAndroid Build Coastguard Worker   ret = virgl_renderer_resource_attach_iov(1, iovs, 1);
490*bbecb9d1SAndroid Build Coastguard Worker   ck_assert_int_eq(ret, EINVAL);
491*bbecb9d1SAndroid Build Coastguard Worker 
492*bbecb9d1SAndroid Build Coastguard Worker   virgl_renderer_resource_unref(1);
493*bbecb9d1SAndroid Build Coastguard Worker   virgl_renderer_context_destroy(1);
494*bbecb9d1SAndroid Build Coastguard Worker   virgl_renderer_cleanup(&mystruct);
495*bbecb9d1SAndroid Build Coastguard Worker }
496*bbecb9d1SAndroid Build Coastguard Worker END_TEST
497*bbecb9d1SAndroid Build Coastguard Worker 
virgl_init_suite(void)498*bbecb9d1SAndroid Build Coastguard Worker static Suite *virgl_init_suite(void)
499*bbecb9d1SAndroid Build Coastguard Worker {
500*bbecb9d1SAndroid Build Coastguard Worker   Suite *s;
501*bbecb9d1SAndroid Build Coastguard Worker   TCase *tc_core;
502*bbecb9d1SAndroid Build Coastguard Worker 
503*bbecb9d1SAndroid Build Coastguard Worker   s = suite_create("virgl_init");
504*bbecb9d1SAndroid Build Coastguard Worker   tc_core = tcase_create("init");
505*bbecb9d1SAndroid Build Coastguard Worker 
506*bbecb9d1SAndroid Build Coastguard Worker   tcase_add_test(tc_core, virgl_init_no_cbs);
507*bbecb9d1SAndroid Build Coastguard Worker   tcase_add_test(tc_core, virgl_init_no_cookie);
508*bbecb9d1SAndroid Build Coastguard Worker   tcase_add_test(tc_core, virgl_init_cbs_wrong_ver);
509*bbecb9d1SAndroid Build Coastguard Worker   tcase_add_test(tc_core, virgl_init_cleanup_without_init);
510*bbecb9d1SAndroid Build Coastguard Worker   tcase_add_test(tc_core, virgl_init_reset_without_init);
511*bbecb9d1SAndroid Build Coastguard Worker   tcase_add_test(tc_core, virgl_init_egl);
512*bbecb9d1SAndroid Build Coastguard Worker   tcase_add_test(tc_core, virgl_init_egl_double_init);
513*bbecb9d1SAndroid Build Coastguard Worker   tcase_add_test(tc_core, virgl_init_egl_double_init_conflict_args);
514*bbecb9d1SAndroid Build Coastguard Worker   tcase_add_test(tc_core, virgl_init_egl_create_ctx);
515*bbecb9d1SAndroid Build Coastguard Worker   tcase_add_test(tc_core, virgl_init_egl_create_ctx_0);
516*bbecb9d1SAndroid Build Coastguard Worker   tcase_add_test(tc_core, virgl_init_egl_destroy_ctx_illegal);
517*bbecb9d1SAndroid Build Coastguard Worker   tcase_add_test(tc_core, virgl_init_egl_create_ctx_leak);
518*bbecb9d1SAndroid Build Coastguard Worker   tcase_add_test(tc_core, virgl_init_egl_create_ctx_reset);
519*bbecb9d1SAndroid Build Coastguard Worker   tcase_add_test(tc_core, virgl_init_get_caps_set0);
520*bbecb9d1SAndroid Build Coastguard Worker   tcase_add_test(tc_core, virgl_init_get_caps_set1);
521*bbecb9d1SAndroid Build Coastguard Worker   tcase_add_test(tc_core, virgl_init_get_caps_null);
522*bbecb9d1SAndroid Build Coastguard Worker   tcase_add_test(tc_core, virgl_init_egl_create_ctx_create_attach_res_illegal_res);
523*bbecb9d1SAndroid Build Coastguard Worker   tcase_add_test(tc_core, virgl_init_egl_create_ctx_create_bind_res_leak);
524*bbecb9d1SAndroid Build Coastguard Worker 
525*bbecb9d1SAndroid Build Coastguard Worker   suite_add_tcase(s, tc_core);
526*bbecb9d1SAndroid Build Coastguard Worker 
527*bbecb9d1SAndroid Build Coastguard Worker   tc_core = tcase_create("init_std");
528*bbecb9d1SAndroid Build Coastguard Worker   tcase_add_checked_fixture(tc_core, testvirgl_init_single_ctx_nr, testvirgl_fini_single_ctx);
529*bbecb9d1SAndroid Build Coastguard Worker   tcase_add_test(tc_core, virgl_init_egl_create_ctx_create_bind_res);
530*bbecb9d1SAndroid Build Coastguard Worker   tcase_add_test(tc_core, virgl_init_egl_create_ctx_create_bind_res_illegal_ctx);
531*bbecb9d1SAndroid Build Coastguard Worker   tcase_add_test(tc_core, virgl_init_egl_create_ctx_create_bind_res_illegal_res);
532*bbecb9d1SAndroid Build Coastguard Worker   tcase_add_test(tc_core, virgl_init_egl_create_ctx_create_unbind_no_bind);
533*bbecb9d1SAndroid Build Coastguard Worker   tcase_add_test(tc_core, virgl_init_egl_create_ctx_create_unbind_illegal_ctx);
534*bbecb9d1SAndroid Build Coastguard Worker 
535*bbecb9d1SAndroid Build Coastguard Worker   tcase_add_test(tc_core, virgl_test_get_resource_info);
536*bbecb9d1SAndroid Build Coastguard Worker   tcase_add_test(tc_core, virgl_test_get_resource_info_no_info);
537*bbecb9d1SAndroid Build Coastguard Worker   tcase_add_test(tc_core, virgl_test_get_resource_info_no_res);
538*bbecb9d1SAndroid Build Coastguard Worker   tcase_add_test(tc_core, virgl_init_egl_create_ctx_create_attach_res);
539*bbecb9d1SAndroid Build Coastguard Worker   tcase_add_test(tc_core, virgl_init_egl_create_ctx_create_attach_res_detach_no_iovs);
540*bbecb9d1SAndroid Build Coastguard Worker 
541*bbecb9d1SAndroid Build Coastguard Worker   suite_add_tcase(s, tc_core);
542*bbecb9d1SAndroid Build Coastguard Worker   return s;
543*bbecb9d1SAndroid Build Coastguard Worker 
544*bbecb9d1SAndroid Build Coastguard Worker }
545*bbecb9d1SAndroid Build Coastguard Worker 
546*bbecb9d1SAndroid Build Coastguard Worker 
main(void)547*bbecb9d1SAndroid Build Coastguard Worker int main(void)
548*bbecb9d1SAndroid Build Coastguard Worker {
549*bbecb9d1SAndroid Build Coastguard Worker   Suite *s;
550*bbecb9d1SAndroid Build Coastguard Worker   SRunner *sr;
551*bbecb9d1SAndroid Build Coastguard Worker   int number_failed;
552*bbecb9d1SAndroid Build Coastguard Worker 
553*bbecb9d1SAndroid Build Coastguard Worker   if (getenv("VRENDTEST_USE_EGL_SURFACELESS"))
554*bbecb9d1SAndroid Build Coastguard Worker      context_flags |= VIRGL_RENDERER_USE_SURFACELESS;
555*bbecb9d1SAndroid Build Coastguard Worker    if (getenv("VRENDTEST_USE_EGL_GLES"))
556*bbecb9d1SAndroid Build Coastguard Worker       context_flags |= VIRGL_RENDERER_USE_GLES;
557*bbecb9d1SAndroid Build Coastguard Worker 
558*bbecb9d1SAndroid Build Coastguard Worker   s = virgl_init_suite();
559*bbecb9d1SAndroid Build Coastguard Worker   sr = srunner_create(s);
560*bbecb9d1SAndroid Build Coastguard Worker 
561*bbecb9d1SAndroid Build Coastguard Worker   srunner_run_all(sr, CK_NORMAL);
562*bbecb9d1SAndroid Build Coastguard Worker   number_failed = srunner_ntests_failed(sr);
563*bbecb9d1SAndroid Build Coastguard Worker   srunner_free(sr);
564*bbecb9d1SAndroid Build Coastguard Worker 
565*bbecb9d1SAndroid Build Coastguard Worker   return number_failed == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
566*bbecb9d1SAndroid Build Coastguard Worker }
567