1*8975f5c5SAndroid Build Coastguard Worker //
2*8975f5c5SAndroid Build Coastguard Worker // Copyright 2016 The ANGLE Project Authors. All rights reserved.
3*8975f5c5SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
4*8975f5c5SAndroid Build Coastguard Worker // found in the LICENSE file.
5*8975f5c5SAndroid Build Coastguard Worker //
6*8975f5c5SAndroid Build Coastguard Worker
7*8975f5c5SAndroid Build Coastguard Worker // SyncQueriesTest.cpp: Tests of the GL_CHROMIUM_sync_query extension
8*8975f5c5SAndroid Build Coastguard Worker
9*8975f5c5SAndroid Build Coastguard Worker #include "test_utils/ANGLETest.h"
10*8975f5c5SAndroid Build Coastguard Worker
11*8975f5c5SAndroid Build Coastguard Worker namespace angle
12*8975f5c5SAndroid Build Coastguard Worker {
13*8975f5c5SAndroid Build Coastguard Worker
14*8975f5c5SAndroid Build Coastguard Worker class SyncQueriesTest : public ANGLETest<>
15*8975f5c5SAndroid Build Coastguard Worker {
16*8975f5c5SAndroid Build Coastguard Worker protected:
SyncQueriesTest()17*8975f5c5SAndroid Build Coastguard Worker SyncQueriesTest()
18*8975f5c5SAndroid Build Coastguard Worker {
19*8975f5c5SAndroid Build Coastguard Worker setWindowWidth(128);
20*8975f5c5SAndroid Build Coastguard Worker setWindowHeight(128);
21*8975f5c5SAndroid Build Coastguard Worker setConfigRedBits(8);
22*8975f5c5SAndroid Build Coastguard Worker setConfigGreenBits(8);
23*8975f5c5SAndroid Build Coastguard Worker setConfigBlueBits(8);
24*8975f5c5SAndroid Build Coastguard Worker setConfigAlphaBits(8);
25*8975f5c5SAndroid Build Coastguard Worker setConfigDepthBits(24);
26*8975f5c5SAndroid Build Coastguard Worker }
27*8975f5c5SAndroid Build Coastguard Worker
testTearDown()28*8975f5c5SAndroid Build Coastguard Worker void testTearDown() override
29*8975f5c5SAndroid Build Coastguard Worker {
30*8975f5c5SAndroid Build Coastguard Worker if (mQuery != 0)
31*8975f5c5SAndroid Build Coastguard Worker {
32*8975f5c5SAndroid Build Coastguard Worker glDeleteQueriesEXT(1, &mQuery);
33*8975f5c5SAndroid Build Coastguard Worker mQuery = 0;
34*8975f5c5SAndroid Build Coastguard Worker }
35*8975f5c5SAndroid Build Coastguard Worker }
36*8975f5c5SAndroid Build Coastguard Worker
37*8975f5c5SAndroid Build Coastguard Worker GLuint mQuery = 0;
38*8975f5c5SAndroid Build Coastguard Worker };
39*8975f5c5SAndroid Build Coastguard Worker
40*8975f5c5SAndroid Build Coastguard Worker // Test basic usage of sync queries
TEST_P(SyncQueriesTest,Basic)41*8975f5c5SAndroid Build Coastguard Worker TEST_P(SyncQueriesTest, Basic)
42*8975f5c5SAndroid Build Coastguard Worker {
43*8975f5c5SAndroid Build Coastguard Worker ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_CHROMIUM_sync_query"));
44*8975f5c5SAndroid Build Coastguard Worker
45*8975f5c5SAndroid Build Coastguard Worker glGenQueriesEXT(1, &mQuery);
46*8975f5c5SAndroid Build Coastguard Worker glBeginQueryEXT(GL_COMMANDS_COMPLETED_CHROMIUM, mQuery);
47*8975f5c5SAndroid Build Coastguard Worker EXPECT_GL_NO_ERROR();
48*8975f5c5SAndroid Build Coastguard Worker
49*8975f5c5SAndroid Build Coastguard Worker glClearColor(0.0, 0.0, 1.0, 1.0);
50*8975f5c5SAndroid Build Coastguard Worker glClear(GL_COLOR_BUFFER_BIT);
51*8975f5c5SAndroid Build Coastguard Worker
52*8975f5c5SAndroid Build Coastguard Worker glEndQueryEXT(GL_COMMANDS_COMPLETED_CHROMIUM);
53*8975f5c5SAndroid Build Coastguard Worker
54*8975f5c5SAndroid Build Coastguard Worker glFlush();
55*8975f5c5SAndroid Build Coastguard Worker GLuint result = 0;
56*8975f5c5SAndroid Build Coastguard Worker glGetQueryObjectuivEXT(mQuery, GL_QUERY_RESULT_EXT, &result);
57*8975f5c5SAndroid Build Coastguard Worker EXPECT_GL_TRUE(result);
58*8975f5c5SAndroid Build Coastguard Worker EXPECT_GL_NO_ERROR();
59*8975f5c5SAndroid Build Coastguard Worker }
60*8975f5c5SAndroid Build Coastguard Worker
61*8975f5c5SAndroid Build Coastguard Worker // Test that the sync query enums are not accepted unless the extension is available
TEST_P(SyncQueriesTest,Validation)62*8975f5c5SAndroid Build Coastguard Worker TEST_P(SyncQueriesTest, Validation)
63*8975f5c5SAndroid Build Coastguard Worker {
64*8975f5c5SAndroid Build Coastguard Worker // Need the GL_EXT_occlusion_query_boolean extension for the entry points
65*8975f5c5SAndroid Build Coastguard Worker ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_EXT_occlusion_query_boolean"));
66*8975f5c5SAndroid Build Coastguard Worker
67*8975f5c5SAndroid Build Coastguard Worker bool extensionAvailable = IsGLExtensionEnabled("GL_CHROMIUM_sync_query");
68*8975f5c5SAndroid Build Coastguard Worker
69*8975f5c5SAndroid Build Coastguard Worker glGenQueriesEXT(1, &mQuery);
70*8975f5c5SAndroid Build Coastguard Worker
71*8975f5c5SAndroid Build Coastguard Worker glBeginQueryEXT(GL_COMMANDS_COMPLETED_CHROMIUM, mQuery);
72*8975f5c5SAndroid Build Coastguard Worker if (extensionAvailable)
73*8975f5c5SAndroid Build Coastguard Worker {
74*8975f5c5SAndroid Build Coastguard Worker EXPECT_GL_NO_ERROR();
75*8975f5c5SAndroid Build Coastguard Worker }
76*8975f5c5SAndroid Build Coastguard Worker else
77*8975f5c5SAndroid Build Coastguard Worker {
78*8975f5c5SAndroid Build Coastguard Worker EXPECT_GL_ERROR(GL_INVALID_ENUM);
79*8975f5c5SAndroid Build Coastguard Worker }
80*8975f5c5SAndroid Build Coastguard Worker
81*8975f5c5SAndroid Build Coastguard Worker glDeleteQueriesEXT(1, &mQuery);
82*8975f5c5SAndroid Build Coastguard Worker
83*8975f5c5SAndroid Build Coastguard Worker EXPECT_GL_NO_ERROR();
84*8975f5c5SAndroid Build Coastguard Worker }
85*8975f5c5SAndroid Build Coastguard Worker
86*8975f5c5SAndroid Build Coastguard Worker // Use this to select which configurations (e.g. which renderer, which GLES major version) these
87*8975f5c5SAndroid Build Coastguard Worker // tests should be run against.
88*8975f5c5SAndroid Build Coastguard Worker ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(SyncQueriesTest);
89*8975f5c5SAndroid Build Coastguard Worker
90*8975f5c5SAndroid Build Coastguard Worker } // namespace angle
91