Hi Neil, This patch breaks the test. Now it always reports "pass" even when it clearly prints failures.
Marek On Thu, Oct 29, 2015 at 12:32 PM, Neil Roberts <n...@linux.intel.com> wrote: > When the -fbo option is given to the fbo-depth-array test it tries to > render to a range of different depth/stencil buffer sizes with > dimensions of up to 8192. It verifies the rendering was correct by > binding the depth or stencil buffer as a texture source, rendering the > texture into the Piglit winsys fbo and then probing the result. In > order to cope with all of the possible buffer sizes it was setting the > winsys framebuffer size to 8192x8192. Doing glReadPixels on a buffer > this size causes problems for some platforms and makes the test run > extremely slowly. The point of the test is just to check rendering to > depth and stencil array textures of different sizes so the size of the > renderbuffer isn't really relevant. This patch makes it instead leave > the winsys buffer at the default size when an FBO is used and then > render the texture multiple times in slices until it has checked the > entire texture. > --- > tests/fbo/fbo-depth-array.c | 53 > ++++++++++++++++++++++++++++++--------------- > 1 file changed, 35 insertions(+), 18 deletions(-) > > diff --git a/tests/fbo/fbo-depth-array.c b/tests/fbo/fbo-depth-array.c > index 1ea6611..b0acd5e 100644 > --- a/tests/fbo/fbo-depth-array.c > +++ b/tests/fbo/fbo-depth-array.c > @@ -65,11 +65,7 @@ PIGLIT_GL_TEST_CONFIG_BEGIN > config.supports_gl_compat_version = 33; > config.supports_gl_core_version = 33; > > - if (piglit_use_fbo && !test_single_size) { > - config.window_width = MAX_DIM; > - config.window_height = MAX_DIM; > - } > - else { > + if (!piglit_use_fbo || test_single_size) { > config.window_width = (width + 2) * MIN2(layers, 4); > config.window_height = (height + 2) * ((layers + 2) / 3); > } > @@ -359,7 +355,10 @@ done: > * array texture. > */ > static void > -draw_layer(int x, int y, int depth) > +draw_layer(int x, int y, > + int tx, int ty, > + int tw, int th, > + int depth) > { > GLfloat depth_coord = (GLfloat)depth; > GLuint prog = test_stencil ? program_texstencil : program_texdepth; > @@ -385,18 +384,41 @@ draw_layer(int x, int y, int depth) > > piglit_draw_rect_tex((double)x / piglit_width * 2 - 1, > (double)y / piglit_height * 2 - 1, > - (double)width / piglit_width * 2, > - (double)height / piglit_height * 2, > - 0, 0, 1, 1); > + (double)tw / piglit_width * 2, > + (double)th / piglit_height * 2, > + tx / (float) width, ty / (float) height, > + tw / (float) width, th / (float) height); > glUseProgram(0); > if (!piglit_check_gl_error(GL_NO_ERROR)) > piglit_report_result(PIGLIT_FAIL); > } > > -static GLboolean test_layer_drawing(int start_x, int start_y, float expected) > +static GLboolean draw_and_test_layer(int start_x, int start_y, > + int layer) > { > - return piglit_probe_rect_r_ubyte(start_x, start_y, width, height, > - expected * 255.0); > + float expected = (test_stencil ? > + get_stencil_value_float(layer) : > + get_depth_value(layer)); > + int tx, ty, tw, th; > + GLboolean pass = GL_TRUE; > + > + for (ty = 0; ty < height; ty += piglit_height - start_y) { > + for (tx = 0; tx < width; tx += piglit_width - start_x) { > + tw = MIN2(piglit_width - start_x, width - tx); > + th = MIN2(piglit_height - start_y, height - ty); > + draw_layer(start_x, start_y, > + tx, ty, > + tw, th, > + layer); > + > + pass = piglit_probe_rect_r_ubyte(start_x, start_y, > + tw, th, > + expected * 255.0) && > + pass; > + } > + } > + > + return pass; > } > > static bool > @@ -424,12 +446,7 @@ test_once(void) > x = 1 + (layer % 3) * (width + 1); > y = 1 + (layer / 3) * (height + 1); > } > - draw_layer(x, y, layer); > - > - pass &= test_layer_drawing(x, y, > - test_stencil ? > - get_stencil_value_float(layer) : > - get_depth_value(layer)); > + draw_and_test_layer(x, y, layer); > > if (piglit_use_fbo && !test_single_size && layer < layers-1) { > glClearColor(0.2, 0.1, 0.1, 1.0); > -- > 1.9.3 > > _______________________________________________ > 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