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 Framebuffer completeness tests. 20*35238bceSAndroid Build Coastguard Worker 21*35238bceSAndroid Build Coastguard WorkerTests: 22*35238bceSAndroid Build Coastguard Worker + dEQP-GLES3.functional.fbo.completeness.renderable.* 23*35238bceSAndroid Build Coastguard Worker + dEQP-GLES3.functional.fbo.completeness.attachment_combinations.* 24*35238bceSAndroid Build Coastguard Worker + dEQP-GLES3.functional.fbo.completeness.size.zero 25*35238bceSAndroid Build Coastguard Worker + dEQP-GLES3.functional.fbo.completeness.size.distinct 26*35238bceSAndroid Build Coastguard Worker + dEQP-GLES3.functional.fbo.completeness.size.layer.* 27*35238bceSAndroid Build Coastguard Worker + dEQP-GLES3.functional.fbo.completeness.size.samples.* 28*35238bceSAndroid Build Coastguard Worker 29*35238bceSAndroid Build Coastguard WorkerIncludes: 30*35238bceSAndroid Build Coastguard Worker + glCheckFramebufferStatus return value check 31*35238bceSAndroid Build Coastguard Worker + Single attachments with all standard (and many extension) formats 32*35238bceSAndroid Build Coastguard Worker + All combinations of color, depth and stencil attachments 33*35238bceSAndroid Build Coastguard Worker + Zero-sized attachment 34*35238bceSAndroid Build Coastguard Worker + Differently sized attachments 35*35238bceSAndroid Build Coastguard Worker + Multilayer attachments 36*35238bceSAndroid Build Coastguard Worker + Compatibility of multisample attachments 37*35238bceSAndroid Build Coastguard Worker 38*35238bceSAndroid Build Coastguard WorkerExcludes: 39*35238bceSAndroid Build Coastguard Worker + Trying FBO operations on in/complete FBOs. 40*35238bceSAndroid Build Coastguard Worker + Completeness status changes after the FBO is modified. 41*35238bceSAndroid Build Coastguard Worker 42*35238bceSAndroid Build Coastguard WorkerDescription: 43*35238bceSAndroid Build Coastguard Worker 44*35238bceSAndroid Build Coastguard WorkerThese tests check that the implementation reports framebuffer completeness 45*35238bceSAndroid Build Coastguard Workerstatus correctly. Most test cases create a single framebuffer object, create 46*35238bceSAndroid Build Coastguard Workersome renderbuffers and/or textures and attach them to the FBO, and then call 47*35238bceSAndroid Build Coastguard WorkerglCheckFramebufferStatus on it. The returned value is compared against a set 48*35238bceSAndroid Build Coastguard Workerof legal return values that is calculated from the arguments given to image 49*35238bceSAndroid Build Coastguard Workercreation and attachment functions. The test passes if the return value is 50*35238bceSAndroid Build Coastguard Workerfound in this set. Some test cases may also expect image creation to fail 51*35238bceSAndroid Build Coastguard Workerbefore it can be attached. 52*35238bceSAndroid Build Coastguard Worker 53*35238bceSAndroid Build Coastguard WorkerFor each test case, the test log shows the configurations of the created 54*35238bceSAndroid Build Coastguard Workerimages and attachments, the set of expected status values and the actual 55*35238bceSAndroid Build Coastguard Workerreturned status value. 56*35238bceSAndroid Build Coastguard Worker 57*35238bceSAndroid Build Coastguard Worker 58*35238bceSAndroid Build Coastguard WorkerThe "renderable.*" test cases iterate through all the texture formats and 59*35238bceSAndroid Build Coastguard Workerattachment points and attach a single texture or renderbuffer with that format 60*35238bceSAndroid Build Coastguard Workerat that attachment point. 61*35238bceSAndroid Build Coastguard Worker 62*35238bceSAndroid Build Coastguard WorkerThe purpose of these tests is to check that the implementation's notion of 63*35238bceSAndroid Build Coastguard Workercolor/depth/stencil-renderability adheres to the GLES specification and 64*35238bceSAndroid Build Coastguard Workerextensions. Both renderability and non-renderability of unexpected formats are 65*35238bceSAndroid Build Coastguard Workerreported as test failures. 66*35238bceSAndroid Build Coastguard Worker 67*35238bceSAndroid Build Coastguard Worker 68*35238bceSAndroid Build Coastguard WorkerThe "attachment_combination.*" test cases attach some textures and/or 69*35238bceSAndroid Build Coastguard Workerrenderbuffers with suitable formats to none, some or all of the framebuffer's 70*35238bceSAndroid Build Coastguard Workerattachment points. The expected status values are as follows: 71*35238bceSAndroid Build Coastguard Worker 72*35238bceSAndroid Build Coastguard Worker* If there are no attachments, GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 73*35238bceSAndroid Build Coastguard Worker must be returned. 74*35238bceSAndroid Build Coastguard Worker 75*35238bceSAndroid Build Coastguard Worker* If there is both a depth and a stencil attachment and one is a texture and 76*35238bceSAndroid Build Coastguard Worker the other is a renderbuffer, GL_FRAMEBUFFER_UNSUPPORTED must be returned. 77*35238bceSAndroid Build Coastguard Worker 78*35238bceSAndroid Build Coastguard Worker* Otherwise, GL_FRAMEBUFFER_COMPLETE must be returned. 79*35238bceSAndroid Build Coastguard Worker 80*35238bceSAndroid Build Coastguard WorkerNote that GLES3 requires the depth and stencil attachments to be the same 81*35238bceSAndroid Build Coastguard Workerimage. When a test case has both a depth and a stencil attachment and either 82*35238bceSAndroid Build Coastguard Workerboth are textures or both are renderbuffers, the same image is used for both 83*35238bceSAndroid Build Coastguard Workerattachments. 84*35238bceSAndroid Build Coastguard Worker 85*35238bceSAndroid Build Coastguard Worker 86*35238bceSAndroid Build Coastguard WorkerThe "size.*" test cases check that attachment sizes are treated correctly. 87*35238bceSAndroid Build Coastguard Worker 88*35238bceSAndroid Build Coastguard WorkerThe "size.zero" test case creates a framebuffer object with a single 89*35238bceSAndroid Build Coastguard Workerzero-sized renderbuffer attachment. The glCheckFramebufferStatus call is 90*35238bceSAndroid Build Coastguard Workerexpected to return GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT. Note that creating 91*35238bceSAndroid Build Coastguard Workerand attaching the zero-sized renderbuffer is still expected to succeed. 92*35238bceSAndroid Build Coastguard Worker 93*35238bceSAndroid Build Coastguard WorkerThe "size.distinct" test case creates a framebuffer object with two 94*35238bceSAndroid Build Coastguard Workerattachments with different sizes. The glCheckFramebufferStatus call is 95*35238bceSAndroid Build Coastguard Workerexpected to return GL_FRAMEBUFFER_COMPLETE. 96*35238bceSAndroid Build Coastguard Worker 97*35238bceSAndroid Build Coastguard Worker 98*35238bceSAndroid Build Coastguard WorkerThe "layer.*" test cases create various layered textures (two-dimensional 99*35238bceSAndroid Build Coastguard Workerarray textures or 3D textures) and attach them to framebuffer objects with 100*35238bceSAndroid Build Coastguard WorkerglFramebufferTextureLayer. The framebuffer status is expected to be 101*35238bceSAndroid Build Coastguard WorkerGL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT when the attached layer number is 102*35238bceSAndroid Build Coastguard Workergreater than or equal to the number of layers in the texture. 103*35238bceSAndroid Build Coastguard Worker 104*35238bceSAndroid Build Coastguard Worker 105*35238bceSAndroid Build Coastguard WorkerThe "samples.*" test cases attach textures and/or renderbuffers with various 106*35238bceSAndroid Build Coastguard Workernumbers of samples. The framebuffer status is expected to be 107*35238bceSAndroid Build Coastguard WorkerGL_FRAMEBUFFER_COMPLETE when the attachments have the same number of samples 108*35238bceSAndroid Build Coastguard Worker(taking textures to have zero samples), or 109*35238bceSAndroid Build Coastguard WorkerGL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE otherwise. 110*35238bceSAndroid Build Coastguard Worker 111*35238bceSAndroid Build Coastguard WorkerBecause implementations are allowed to allocate more samples than 112*35238bceSAndroid Build Coastguard Workerrequested, a framebuffer object whose attachments have requested a 113*35238bceSAndroid Build Coastguard Workerdifferent, but non-zero, number of samples, is allowed to check either 114*35238bceSAndroid Build Coastguard Workeras complete or incomplete. 115*35238bceSAndroid Build Coastguard Worker 116*35238bceSAndroid Build Coastguard WorkerIf a test case requests more samples than the implementation supports, 117*35238bceSAndroid Build Coastguard Workerthe case is reported as "not supported". 118