On 15 August 2013 12:40, Steve Miller <dervi...@gmail.com> wrote: > add new test to existing arb_seamless_cube_map group: sample three > adjoining > faces and use average. if three faces are the same color, that color > must > be used. > add test to makelists and all.tests > --- > tests/all.tests | 1 + > tests/spec/arb_seamless_cube_map/CMakeLists.gl.txt | 1 + > .../arb_seamless_cube_map/three-faces-average.c | 142 > +++++++++++++++++++++ > 3 files changed, 144 insertions(+) > create mode 100644 tests/spec/arb_seamless_cube_map/three-faces-average.c > > diff --git a/tests/all.tests b/tests/all.tests > index 8766572..7240312 100644 > --- a/tests/all.tests > +++ b/tests/all.tests > @@ -2233,6 +2233,7 @@ arb_seamless_cube_map = Group() > spec['ARB_seamless_cube_map'] = arb_seamless_cube_map > add_plain_test(arb_seamless_cube_map, 'arb_seamless_cubemap') > add_plain_test(arb_seamless_cube_map, > 'arb_seamless_cubemap-initially-disabled') > +add_plain_test(arb_seamless_cube_map, > 'arb_seamless_cubemap-three-faces-average') > > amd_seamless_cubemap_per_texture = Group() > spec['AMD_seamless_cubemap_per_texture'] = > amd_seamless_cubemap_per_texture > diff --git a/tests/spec/arb_seamless_cube_map/CMakeLists.gl.txt > b/tests/spec/arb_seamless_cube_map/CMakeLists.gl.txt > index eac572a..e31759a 100644 > --- a/tests/spec/arb_seamless_cube_map/CMakeLists.gl.txt > +++ b/tests/spec/arb_seamless_cube_map/CMakeLists.gl.txt > @@ -11,5 +11,6 @@ link_libraries ( > > piglit_add_executable (arb_seamless_cubemap arb_seamless_cubemap.c) > piglit_add_executable (arb_seamless_cubemap-initially-disabled > initially-disabled.c) > +piglit_add_executable (arb_seamless_cubemap-three-faces-average > three-faces-average.c) > > # vim: ft=cmake: > diff --git a/tests/spec/arb_seamless_cube_map/three-faces-average.c > b/tests/spec/arb_seamless_cube_map/three-faces-average.c > new file mode 100644 > index 0000000..5c3609d > --- /dev/null > +++ b/tests/spec/arb_seamless_cube_map/three-faces-average.c > @@ -0,0 +1,142 @@ > +/* > + * Copyright © Marek Olšák <mar...@gmail.com> >
I think you changed enough from the test you were cribbing from that it makes sense to change this to "Copyright © 2013 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 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 > + * AUTHORS 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. > + */ > + > +/* > + * Test verifies that when sampling from three ajoining faces in a cube > map, > + * samples will be averaged.If they share the same value, that value must > be > Space after the period. > + * guaranteed to be the result of the average. Resulting color should not > include > + * border color contamination. > + */ > + > +/* > + * ARB_seamless_cube_map Section 3.8.7 says: > + * "If LINEAR filtering is done within a miplevel, always apply wrap > mode > + * CLAMP_TO_BORDER. Then, ... > + * > + * If a texture sample location would lie in the texture border in > + * both u and v (in one of the corners of the cube), there is no > + * unique neighboring face from which to extract one texel. The > + * recommended method is to average the values of the three > + * available samples. However, implementations are free to > + * construct this fourth texel in another way, so long as, when the > + * three available samples have the same value, this texel also has > + * that value." > + */ > + > +#include "piglit-util-gl-common.h" > + > +PIGLIT_GL_TEST_CONFIG_BEGIN > + > + config.supports_gl_compat_version = 10; > + > + config.window_width = 100; > + config.window_height = 40; > + config.window_visual = PIGLIT_GL_VISUAL_RGB | > PIGLIT_GL_VISUAL_DOUBLE; > + > +PIGLIT_GL_TEST_CONFIG_END > + > +static const float red[3] = { 1., 0., 0. }; > +static const float blue[3] = { 0., 0., 1. }; > +static const float black[3] = { 0., 0., 0. }; > + > +static const GLenum targets[6] = { > + GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB, > + GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB, > + GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB, > + GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB, > + GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB, > + GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB > +}; > + > +static void draw_quad(int x, int y, float s, float t, float r) > +{ > + glBegin(GL_QUADS); > + glTexCoord3f(s, t, r); > + glVertex2i(x, y); > + glVertex2i(x, y+20); > + glVertex2i(x+20, y+20); > + glVertex2i(x+20, y); > + glEnd(); > +} > We try to avoid using deprecated functionality in new tests. Please rewrite this test to use shaders, VBO's, etc. Other than that, the test looks reasonable. Thanks! > + > +void piglit_init( int argc, char **argv) > +{ > + GLint i; > + > + piglit_require_extension( "GL_ARB_texture_cube_map" ); > + piglit_require_extension( "GL_ARB_seamless_cube_map" ); > + > + glBindTexture( GL_TEXTURE_CUBE_MAP_ARB, 1 ); > + /* set filter to linear, hardware should behave as if > + * wrap modes are set to CLAMP_TO_BORDER > + */ > + glTexParameterfv( GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_BORDER_COLOR, > + black ); > + glTexParameteri( GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_MIN_FILTER, > + GL_LINEAR ); > + glTexParameteri( GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_MAG_FILTER, > + GL_LINEAR ); > + > + /* texture positive axes/faces red */ > + for( i = 0; i < 3; i++ ) > + { > + glTexImage2D( targets[i], 0, GL_RGBA8, 1, 1, 0, GL_RGB, > GL_FLOAT, > + red ); > + } > + > + /* texuture negative axes/faces blue */ > + for( i = 3; i < 6; i++ ) > + { > + glTexImage2D( targets[i], 0, GL_RGBA8, 1, 1, 0, GL_RGB, > GL_FLOAT, > + blue ); > + } > + > + glEnable( GL_TEXTURE_CUBE_MAP_ARB ); > + > + glClearColor( 0.0, 0.0, 0.0, 0.0 ); > + > + piglit_ortho_projection( piglit_width, piglit_height, GL_FALSE ); > +} > + > +enum piglit_result piglit_display(void) > +{ > + bool pass = true; > + > + glClear( GL_COLOR_BUFFER_BIT ); > + > + glEnable( GL_TEXTURE_CUBE_MAP_SEAMLESS ); > + > + /* texcoords should target vector to upper corner */ > + draw_quad( 10, 10, 0.5, 0.5, 0.5 ); > + /* expect red */ > + pass = piglit_probe_pixel_rgb( 20, 20, red ) && pass; > + > + /* texcoords should target vector to bottom corner */ > + draw_quad ( 40, 10, -0.5, -0.5, -0.5 ); > + /* expect blue */ > + pass = piglit_probe_pixel_rgb( 50, 20, blue ) && pass; > + > + glDisable( GL_TEXTURE_CUBE_MAP_SEAMLESS ); > + > + piglit_present_results(); > + > + return pass ? PIGLIT_PASS : PIGLIT_FAIL; > +} > -- > 1.8.3.1 > > _______________________________________________ > Piglit mailing list > Piglit@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/piglit >
_______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/piglit