Commit c27ef002 authored by Jian Zhao's avatar Jian Zhao Committed by Yuanhan Liu
Browse files

Add test case of error check on glGetTexImage.



Add test case on error check on glGetTexImage with types(like
GL_UNSIGNED_INT_10F_11F_11F_REV) that only work with format GL_RGB, but format
isn't GL_RGB the result should be GL_INVALID_OPERATION.

As glGetTexImage in OpenGL 4.2 Reference Pages:
"GL_INVALID_OPERATION is returned if type is one of GL_UNSIGNED_BYTE_3_3_2,
GL_UNSIGNED_BYTE_2_3_3_REV, GL_UNSIGNED_SHORT_5_6_5,
GL_UNSIGNED_SHORT_5_6_5_REV, or GL_UNSIGNED_INT_10F_11F_11F_REV and format is
not GL_RGB".

v2: change the test name to be more specific and change some code style to be
easier to read (per Brian's suggest).

v3: move the case to the spec directory and rename it to
getteximage_error_check.c. (per Brian's suggest)

v4: add all the formats that only work with GL_RGB format, rename it more
specific and some minor changes. (per Ian's suggest)

v5: some changes in code styles, like "One space on either side of a binary operator or =". (per Ian's suggest)

v6: fix all the indention issues. (per yuanhan's suggest)
Signed-off-by: default avatarJian Zhao <jian.j.zhao@intel.com>
Reviewed-by: Brian Paul's avatarBrian Paul <brianp@vmware.com>
Reviewed-by: Yuanhan Liu's avatarYuanhan Liu <yuanhan.liu@linux.intel.com>
parent 5ccb284c
......@@ -1284,6 +1284,7 @@ add_fbo_blending_extension(ext_packed_float, 'GL_EXT_packed_float', 'fbo-blendin
add_fbo_alphatest_extension(ext_packed_float, 'GL_EXT_packed_float', 'fbo-alphatest-formats')
add_texwrap_test2(ext_packed_float, '2D', 'GL_R11F_G11F_B10F')
ext_packed_float['pack'] = concurrent_test('ext_packed_float-pack')
ext_packed_float['getteximage-invalid-format-for-packed-type'] = concurrent_test('getteximage-invalid-format-for-packed-type')
arb_texture_float = Group()
spec['ARB_texture_float'] = arb_texture_float
......
......@@ -13,5 +13,6 @@ link_libraries (
)
add_executable (ext_packed_float-pack pack.c)
add_executable (getteximage-invalid-format-for-packed-type getteximage-invalid-format-for-packed-type.c)
# vim: ft=cmake:
/*
* Copyright © 2011 Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice (including the next
* paragraph) shall be included in all copies or substantial portions of the
* Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
* IN THE SOFTWARE.
*
*
*/
/**
* file tests/spec/ext_packed_float/getteximage-invalid-format-for-packed-type.c
* test with some invalid type when the format is not GL_RGB.
*
* Page 262 (page 282 of the PDF) of the OpenGL 4.2 Compatibility
* Profile spec says:
*
* "The number of components per packed pixel is fixed by the
* type, and must match the number of components per group
* indicated by the format parameter, as listed in table 3.8.
* The error INVALID_OPERATION is generated by any command
* processing pixel rectangles if a mismatch occurs."
*
* Table 3.8 says:
*
*"type Parameter Token Name ... Matching Pixel Formats"
* UNSIGNED_BYTE_3_3_2 RGB, RGB_INTEGER
* UNSIGNED_BYTE_2_3_3_REV RGB, RGB_INTEGER
* UNSIGNED_SHORT_5_6_5 RGB, RGB_INTEGER
* UNSIGNED_SHORT_5_6_5_REV RGB, RGB_INTEGER
* UNSIGNED_SHORT_4_4_4_4 RGBA, BGRA, RGBA_INTEGER,
* BGRA_INTEGER
* UNSIGNED_SHORT_4_4_4_4_REV RGBA, BGRA, RGBA_INTEGER,
* BGRA_INTEGER
* UNSIGNED_SHORT_5_5_5_1 RGBA, BGRA, RGBA_INTEGER,
* BGRA_INTEGER
* UNSIGNED_SHORT_1_5_5_5_REV RGBA, BGRA, RGBA_INTEGER,
* BGRA_INTEGER
* UNSIGNED_INT_8_8_8_8 RGBA, BGRA, RGBA_INTEGER,
* BGRA_INTEGER
* UNSIGNED_INT_8_8_8_8_REV RGBA, BGRA, RGBA_INTEGER,
* BGRA_INTEGER
* UNSIGNED_INT_10_10_10_2 RGBA, BGRA, RGBA_INTEGER,
* BGRA_INTEGER
* UNSIGNED_INT_2_10_10_10_REV RGBA, BGRA, RGBA_INTEGER,
* BGRA_INTEGER
* UNSIGNED_INT_24_8 DEPTH_STENCIL
* UNSIGNED_INT_10F_11F_11F_REV RGB, RGB_INTEGER
* UNSIGNED_INT_5_9_9_9_REV RGB, RGB_INTEGER
* FLOAT_32_UNSIGNED_INT_24_8_REV DEPTH_STENCIL"
*
*
*/
#include "piglit-util.h"
int piglit_width = 100, piglit_height = 100;
int piglit_window_mode = GLUT_RGBA | GLUT_DOUBLE;
static const GLenum formatTypes[] = {
GL_RGBA,
GL_RGB,
GL_RED,
GL_GREEN,
GL_BLUE,
GL_ALPHA,
GL_LUMINANCE,
GL_LUMINANCE_ALPHA,
};
static const GLenum testedTypes[] = {
GL_UNSIGNED_BYTE_3_3_2,
GL_UNSIGNED_BYTE_2_3_3_REV,
GL_UNSIGNED_SHORT_5_6_5,
GL_UNSIGNED_SHORT_5_6_5_REV,
GL_UNSIGNED_INT_10F_11F_11F_REV,
};
enum piglit_result
piglit_display(void)
{
return PIGLIT_FAIL;
}
void
piglit_init(int argc, char **argv)
{
long rcvError, expError = GL_NO_ERROR;
GLfloat pxBuffer[4];
int i, j;
piglit_require_extension("GL_EXT_packed_float");
for (j = 0; j < ARRAY_SIZE(testedTypes); j++) {
for (i = 0; i< ARRAY_SIZE(formatTypes); i++) {
glGetTexImage(GL_TEXTURE_2D, 0, formatTypes[i],
testedTypes[j], pxBuffer);
rcvError = glGetError();
if (formatTypes[i] == GL_RGB)
expError = GL_NO_ERROR;
else
expError = GL_INVALID_OPERATION;
if (rcvError != expError)
piglit_report_result(PIGLIT_FAIL);
}
}
piglit_report_result(PIGLIT_PASS);
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment