The idea was that if we can't get through the setup without GL errors, there's no point in continuing I don't feel strongly about it though.
On Thu, Jan 23, 2014 at 6:36 AM, Jon Ashburn <[email protected]> wrote: > see inline > > On 01/18/2014 11:51 PM, Chris Forbes wrote: >> >> Tests that the correct layers of a 2D array texture are overwritten when >> uploading through a view. >> >> Signed-off-by: Chris Forbes <[email protected]> >> --- >> tests/all.py | 1 + >> tests/spec/arb_texture_view/CMakeLists.gl.txt | 1 + >> tests/spec/arb_texture_view/texsubimage-layers.c | 123 >> +++++++++++++++++++++++ >> 3 files changed, 125 insertions(+) >> create mode 100644 tests/spec/arb_texture_view/texsubimage-layers.c >> >> diff --git a/tests/all.py b/tests/all.py >> index 01bd289..f21bdb6 100644 >> --- a/tests/all.py >> +++ b/tests/all.py >> @@ -1944,6 +1944,7 @@ arb_texture_view['rendering-levels'] = >> concurrent_test('arb_texture_view-renderi >> arb_texture_view['lifetime-format'] = >> concurrent_test('arb_texture_view-lifetime-format') >> arb_texture_view['getteximage-srgb'] = >> concurrent_test('arb_texture_view-getteximage-srgb') >> arb_texture_view['texsubimage-levels'] = >> concurrent_test('arb_texture_view-texsubimage-levels') >> +arb_texture_view['texsubimage-layers'] = >> concurrent_test('arb_texture_view-texsubimage-layers') >> tdfx_texture_compression_fxt1 = Group() >> spec['3DFX_texture_compression_FXT1'] = tdfx_texture_compression_fxt1 >> diff --git a/tests/spec/arb_texture_view/CMakeLists.gl.txt >> b/tests/spec/arb_texture_view/CMakeLists.gl.txt >> index bfa9460..eeeb978 100644 >> --- a/tests/spec/arb_texture_view/CMakeLists.gl.txt >> +++ b/tests/spec/arb_texture_view/CMakeLists.gl.txt >> @@ -19,5 +19,6 @@ piglit_add_executable(arb_texture_view-rendering-target >> rendering_target.c commo >> piglit_add_executable(arb_texture_view-rendering-levels >> rendering_levels.c common.c) >> piglit_add_executable(arb_texture_view-lifetime-format lifetime_format.c >> common.c) >> piglit_add_executable(arb_texture_view-texsubimage-levels >> texsubimage-levels.c common.c) >> +piglit_add_executable(arb_texture_view-texsubimage-layers >> texsubimage-layers.c common.c) >> # vim: ft=cmake: >> diff --git a/tests/spec/arb_texture_view/texsubimage-layers.c >> b/tests/spec/arb_texture_view/texsubimage-layers.c >> new file mode 100644 >> index 0000000..d76d494 >> --- /dev/null >> +++ b/tests/spec/arb_texture_view/texsubimage-layers.c >> @@ -0,0 +1,123 @@ >> +/* >> + * Copyright © 2014 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. >> + * >> + * Author: Chris Forbes <[email protected]> >> + */ >> + >> +/** >> + * \file >> + * This tests that TexSubImage* into a view behaves correctly when the >> view >> + * has a nonzero MinLayer. >> + * >> + */ >> + >> +#include "piglit-util-gl-common.h" >> +#include "common.h" >> + >> +PIGLIT_GL_TEST_CONFIG_BEGIN >> + >> + config.supports_gl_compat_version = 30; >> + config.window_visual = PIGLIT_GL_VISUAL_RGBA | >> PIGLIT_GL_VISUAL_DOUBLE; >> + >> +PIGLIT_GL_TEST_CONFIG_END >> + >> +enum piglit_result >> +piglit_display(void) >> +{ >> + return PIGLIT_FAIL; >> +} >> + >> +#define NUM_LAYERS 7 >> +#define VIEW_MIN_LAYER 2 >> +#define VIEW_NUM_LAYERS 3 >> +#define TEX_SIZE 64 >> + >> +void >> +piglit_init(int argc, char **argv) >> +{ >> + GLuint tex, view; >> + int i, j; >> + bool pass = true; >> + >> + piglit_require_extension("GL_ARB_texture_storage"); >> + piglit_require_extension("GL_ARB_texture_view"); >> + >> + /* build a 2d array texture; no mip levels */ >> + glGenTextures(1, &tex); >> + glBindTexture(GL_TEXTURE_2D_ARRAY, tex); >> + glTexStorage3D(GL_TEXTURE_2D_ARRAY, 1, >> + GL_RGBA8, TEX_SIZE, TEX_SIZE, NUM_LAYERS); >> + >> + for (i=0; i < NUM_LAYERS; i++) { >> + GLubyte *pixels = create_solid_image(TEX_SIZE, TEX_SIZE, >> + 1, 4, i); >> + glTexSubImage3D(GL_TEXTURE_2D_ARRAY, 0, >> + 0, 0, i, TEX_SIZE, TEX_SIZE, 1, >> + GL_RGBA, GL_UNSIGNED_BYTE, pixels); >> + free(pixels); >> + } >> + >> + /* create a view to a subset of the layers */ >> + glGenTextures(1, &view); >> + glTextureView(view, GL_TEXTURE_2D_ARRAY, tex, GL_RGBA8, >> + 0, 1, VIEW_MIN_LAYER, VIEW_NUM_LAYERS); >> + >> + if (!piglit_check_gl_error(GL_NO_ERROR)) >> + piglit_report_result(PIGLIT_FAIL); > > Should continue with running test > pass = piglit_check_gl_error(GL_NO_ERROR) && pass; > >> + >> + /* upload through the view */ >> + glBindTexture(GL_TEXTURE_2D_ARRAY, view); >> + for (i = 0; i < VIEW_NUM_LAYERS; i++) { >> + GLubyte *pixels = create_solid_image(TEX_SIZE, TEX_SIZE, >> + 1, 4, i + NUM_LAYERS); >> + glTexSubImage3D(GL_TEXTURE_2D_ARRAY, 0, >> + 0, 0, i, TEX_SIZE, TEX_SIZE, 1, >> + GL_RGBA, GL_UNSIGNED_BYTE, pixels); >> + free(pixels); >> + } >> + >> + if (!piglit_check_gl_error(GL_NO_ERROR)) >> + piglit_report_result(PIGLIT_FAIL); > > Should continue with running test > pass = piglit_check_gl_error(GL_NO_ERROR) && pass; > >> + >> + /* bind the underlying texture and readback */ >> + glBindTexture(GL_TEXTURE_2D_ARRAY, tex); >> + for (i = 0; i < NUM_LAYERS; i++) { >> + /* the layers inside the view should have been replaced. >> + * everything else should be untouched. >> + */ >> + >> + int color_index = (i < VIEW_MIN_LAYER || >> + i >= VIEW_MIN_LAYER + VIEW_NUM_LAYERS) ? i : i + >> NUM_LAYERS; > > Should be > : i + NUM_LAYERS - VIEW_MIN_LAYER > >> + float expected_color[4]; >> + >> + printf("Testing layer %d\n", i); >> + >> + for (j = 0; j < 4; j++) >> + expected_color[j] = Colors[color_index][j] / >> 255.0f; >> + >> + pass = piglit_probe_texel_volume_rgba(GL_TEXTURE_2D_ARRAY, >> 0, >> + 0, 0, i, TEX_SIZE, TEX_SIZE, 1, >> + expected_color) && pass; >> + } >> + >> + piglit_report_result(pass ? PIGLIT_PASS : PIGLIT_FAIL); >> +} > > > _______________________________________________ > Piglit mailing list > [email protected] > http://lists.freedesktop.org/mailman/listinfo/piglit _______________________________________________ Piglit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/piglit
