-------------------------------------------------------------------------
drawElements Quality Program Test Specification
-----------------------------------------------

Copyright 2014 The Android Open Source Project

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-------------------------------------------------------------------------
    Pixel Buffer Object tests

Tests:
 + dEQP-GLES3.functional.pbo.*

Includes:
 + Creating and destroying pixel pack and unpack buffers
 + Writing buffer data using glBufferData() and glBufferSubData()
 + Mapping PBOs
 + Reading pixels to pixel pack buffer
 + Copying between pixel buffer objects (2012.3)
 + Texture pack modes used in combination with pixel pack buffers

Excludes:
 + Specifying textures from PBOs
   - Fully covered in texture specification tests
 + Negative API tests
   - Will be added in 2012.3
 + Buffer queries
   - Will be added in 2012.4

Description:

Pixel buffer object tests create pixel pack buffer or unpack buffer. Data is
written to buffer either using glBuffer(Sub)Data() or mapping buffer. After
the write data is verified to be correct by mapping the buffer. Additionally,
for pixel pack buffers readpixels is issued with PBO bound. The readpixels result
is verified by doing the same operation without pack buffer and then comparing
the results.
