Home | History | Annotate | Download | only in GLES2
      1 -------------------------------------------------------------------------
      2 drawElements Quality Program Test Specification
      3 -----------------------------------------------
      4 
      5 Copyright 2014 The Android Open Source Project
      6 
      7 Licensed under the Apache License, Version 2.0 (the "License");
      8 you may not use this file except in compliance with the License.
      9 You may obtain a copy of the License at
     10 
     11      http://www.apache.org/licenses/LICENSE-2.0
     12 
     13 Unless required by applicable law or agreed to in writing, software
     14 distributed under the License is distributed on an "AS IS" BASIS,
     15 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     16 See the License for the specific language governing permissions and
     17 limitations under the License.
     18 -------------------------------------------------------------------------
     19     Object lifetime tests.
     20 
     21 Tests:
     22  + dEQP-GLES2.functional.lifetime.*
     23 
     24 Includes:
     25  + All OpenGL ES 2.0 object types
     26    - Buffers
     27    - Textures
     28    - Renderbuffers
     29    - Framebuffers
     30    - Shaders
     31    - Programs
     32  + Object existence tests based on Is* queries
     33    - After calling Gen* or Create*
     34    - After calling Gen* or Create*, then Delete*
     35    - After calling Gen*, then Bind*
     36    - After calling Gen*, then Bind*, then Delete*
     37    - After calling Bind* without preceding Gen*
     38    - After calling CreateProgram, then UseProgram, then DeleteProgram
     39  + Tests for deleting an object that is attached to a container
     40    - Is* queries for the name of the deleted object
     41    - Reading from the container
     42    - Writing to the container
     43 
     44 Excludes:
     45  + Deleting an object that is currently bound in another context
     46 
     47 Description:
     48 
     49 These tests check that creation and deletion of objects adheres to the
     50 OpenGL ES 2.0 specification. The tests check the existence of objects as
     51 reported by the Is* family of GL functions, the state of bindings as
     52 reported in various state variables, and the behavior of containers with
     53 deleted objects.
     54 
     55 NOTE: Because these tests try to delete objects that are directly or
     56 indirectly attached to the current context, a faulty OpenGL ES
     57 implementation may reclaim and later reallocate memory that is still
     58 being referenced. This may result in unpredictable errors at some later
     59 time. Use of external memory debugging tools may be required to
     60 accurately identify these errors.
     61 
     62 The "gen.*" test cases call the object type's Gen* or Create* function
     63 to allocate a new name, and then check whether the name is used, i.e.
     64 whether a new object was created for the name (as reported by the result
     65 of the corresponding Is* function). In OpenGL ES 2.0, the Gen* functions
     66 must never create an object, and the Create* functions must always
     67 create an object.
     68 
     69 The "delete.*" test cases call an object type's Gen* or Create* function
     70 followed by the Delete* function. They then check that the generated
     71 name is no longer in use.
     72 
     73 The "bind.*" test cases call an object type's Gen* function followed by
     74 its Bind* function. They then check that the name is in use.
     75 
     76 The "delete_bound.*" test cases call an object type's Gen* function
     77 followed by its Bind* function and Delete* function. They then check
     78 that the name is no longer in use and that the binding has been removed.
     79 
     80 The "bind_no_gen.*" test cases call the object type's Bind* function for
     81 a random name that has not been produced by the Gen* function. They then
     82 check whether the function call succeeded. In OpenGL ES 2.0, all Bind*
     83 calls must succeed even for names not produced by the Gen* function.
     84 
     85 The "delete_used.program" test case creates a new program object (along
     86 with associated shader objects) and makes it the current program with
     87 the glUseProgram function. The program object is then deleted. The test
     88 checks that the name of the program remains in use and is flagged for
     89 deletion. Then the program is made non-current and the test checks that
     90 the name becomes unused.
     91 
     92 The "attach.*" family of test cases create a container object (a
     93 framebuffer or a program) and attach another object (a texture,
     94 renderbuffer or shader) to it. The attached object is then deleted.
     95 
     96 In the "attach.deleted_name.*" test cases, the container is queried for
     97 its attachment, and the existence of the deleted attachment object is
     98 checked. In OpenGL ES 2.0, shader objects must exist even after deletion
     99 if they are attached to a program. The names of other types of
    100 attachment objects must become unused, even though their state still
    101 remains referenced by the container.
    102 
    103 In the "attach.deleted_input.*" test cases, the container is read from
    104 (by reading a framebuffer's pixel contents or using a program for
    105 drawing) before the attachment is deleted, and then after deleting the
    106 attachment and creating a new object of the attachment type. If the
    107 results differ, the new object erroneously affected the container's
    108 state.
    109 
    110 In the "attach.deleted_output.*" test cases, the container is written to
    111 (by drawing to a framebuffer) after deleting the attachment and creating
    112 a new object of the attachment type. If the writing affected the new
    113 object state, it erroneously shared state with the deleted attachment.
    114