1*35238bceSAndroid Build Coastguard Worker------------------------------------------------------------------------- 2*35238bceSAndroid Build Coastguard WorkerdrawElements Quality Program Test Specification 3*35238bceSAndroid Build Coastguard Worker----------------------------------------------- 4*35238bceSAndroid Build Coastguard Worker 5*35238bceSAndroid Build Coastguard WorkerCopyright 2014 The Android Open Source Project 6*35238bceSAndroid Build Coastguard Worker 7*35238bceSAndroid Build Coastguard WorkerLicensed under the Apache License, Version 2.0 (the "License"); 8*35238bceSAndroid Build Coastguard Workeryou may not use this file except in compliance with the License. 9*35238bceSAndroid Build Coastguard WorkerYou may obtain a copy of the License at 10*35238bceSAndroid Build Coastguard Worker 11*35238bceSAndroid Build Coastguard Worker http://www.apache.org/licenses/LICENSE-2.0 12*35238bceSAndroid Build Coastguard Worker 13*35238bceSAndroid Build Coastguard WorkerUnless required by applicable law or agreed to in writing, software 14*35238bceSAndroid Build Coastguard Workerdistributed under the License is distributed on an "AS IS" BASIS, 15*35238bceSAndroid Build Coastguard WorkerWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16*35238bceSAndroid Build Coastguard WorkerSee the License for the specific language governing permissions and 17*35238bceSAndroid Build Coastguard Workerlimitations under the License. 18*35238bceSAndroid Build Coastguard Worker------------------------------------------------------------------------- 19*35238bceSAndroid Build Coastguard Worker GLES 3.1 debug (KHR_debug) 20*35238bceSAndroid Build Coastguard Worker 21*35238bceSAndroid Build Coastguard WorkerTests: 22*35238bceSAndroid Build Coastguard Worker + dEQP-GLES31.functional.debug.* 23*35238bceSAndroid Build Coastguard Worker 24*35238bceSAndroid Build Coastguard WorkerIncludes: 25*35238bceSAndroid Build Coastguard Worker + Reporting basic API errors 26*35238bceSAndroid Build Coastguard Worker - Callback 27*35238bceSAndroid Build Coastguard Worker - Log 28*35238bceSAndroid Build Coastguard Worker - glGetError 29*35238bceSAndroid Build Coastguard Worker + Application generated messages 30*35238bceSAndroid Build Coastguard Worker - InsertMessage 31*35238bceSAndroid Build Coastguard Worker - Push/Pop 32*35238bceSAndroid Build Coastguard Worker + Message filtering 33*35238bceSAndroid Build Coastguard Worker + Debug groups 34*35238bceSAndroid Build Coastguard Worker + Asynchronous output 35*35238bceSAndroid Build Coastguard Worker - Most cases use synchronous 36*35238bceSAndroid Build Coastguard Worker + Labels (for all valid object types) 37*35238bceSAndroid Build Coastguard Worker + Handling for debug/non-debug contexts 38*35238bceSAndroid Build Coastguard Worker + Limits (MAX_DEBUG_MESSAGE_LENGTH, MAX_DEBUG_LOGGED_MESSAGES) 39*35238bceSAndroid Build Coastguard Worker 40*35238bceSAndroid Build Coastguard WorkerExcludes: 41*35238bceSAndroid Build Coastguard Worker + Negative API tests for the extension itself 42*35238bceSAndroid Build Coastguard Worker + Some API errors 43*35238bceSAndroid Build Coastguard Worker + Labeled objects are not used for anything 44*35238bceSAndroid Build Coastguard Worker + Initial state of DEBUG_OUTPUT 45*35238bceSAndroid Build Coastguard Worker 46*35238bceSAndroid Build Coastguard Worker 47*35238bceSAndroid Build Coastguard WorkerDescription: 48*35238bceSAndroid Build Coastguard Worker 49*35238bceSAndroid Build Coastguard WorkerKHR_debug does not require generating messages if the GL context is not a 50*35238bceSAndroid Build Coastguard Workerdebug context. The verification logic takes this into account and thus the 51*35238bceSAndroid Build Coastguard Workertests have significantly lower criteria for passing when not running in a 52*35238bceSAndroid Build Coastguard Workerdebug context. In situations that would not pass with a debug context (and 53*35238bceSAndroid Build Coastguard Workersome other suspect cases) a quality warning is generated instead. 54*35238bceSAndroid Build Coastguard WorkerAs such any real testing of this feature should be done in a debug context. 55*35238bceSAndroid Build Coastguard Worker 56*35238bceSAndroid Build Coastguard WorkerTests can be run in a debug context with the --deqp-gl-context-flags=debug 57*35238bceSAndroid Build Coastguard Workercommand line argument 58*35238bceSAndroid Build Coastguard Worker 59*35238bceSAndroid Build Coastguard WorkerBasic API error conditions are tested by calling the API in a manner that should 60*35238bceSAndroid Build Coastguard Workergenerate errors and verifying that appropriate errors were generated. 61*35238bceSAndroid Build Coastguard WorkerVerification is performed with a callback, querying the error log or GetError. 62*35238bceSAndroid Build Coastguard WorkerOther than the fetching of errors (where necessary) the API usage is identical 63*35238bceSAndroid Build Coastguard Workerbetween equivalent test cases with different verification methods. 64*35238bceSAndroid Build Coastguard Worker 65*35238bceSAndroid Build Coastguard WorkerApplication generated messages are generated with DebugMessageInsert and 66*35238bceSAndroid Build Coastguard WorkerPush/Pop DebugGroup and verified with a callback. 67*35238bceSAndroid Build Coastguard Worker 68*35238bceSAndroid Build Coastguard WorkerMessage filtering tests use a partially randomized set of API calls. The 69*35238bceSAndroid Build Coastguard Workermessages produced by these calls are first gathered without any filtering. 70*35238bceSAndroid Build Coastguard WorkerFiltering is then enabled with a randomized set of changes from the base 71*35238bceSAndroid Build Coastguard Worker(unfiltered) state and the API calls are re-run. The messages from the second 72*35238bceSAndroid Build Coastguard Workerrun are verified to be the correct subset of messages from the first run. 73*35238bceSAndroid Build Coastguard Worker 74*35238bceSAndroid Build Coastguard WorkerDebug groups are tested with an extended version of filtering tests. 75*35238bceSAndroid Build Coastguard WorkerFiltering tests are essentially run several times with the same set of API 76*35238bceSAndroid Build Coastguard Workercalls and with verification after every push/pop. 77*35238bceSAndroid Build Coastguard Worker 78*35238bceSAndroid Build Coastguard WorkerAsynchronous message generation is tested by running the same set of API calls 79*35238bceSAndroid Build Coastguard Workerfirst with DEBUG_OUTPUT_SYNCHRONOUS enabled and then with it disabled and 80*35238bceSAndroid Build Coastguard Workercomparing the generated messages. The set of API calls used is randomized. 81*35238bceSAndroid Build Coastguard WorkerSome async cases use callbacks while others query the debyg message log. 82*35238bceSAndroid Build Coastguard WorkerOther than the calls necessari to query the log these cases use identical 83*35238bceSAndroid Build Coastguard Workerframework code. 84*35238bceSAndroid Build Coastguard Worker 85*35238bceSAndroid Build Coastguard WorkerLabels are set and immediately read back. 86