aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChad Versace <chad.versace@intel.com>2011-05-18 19:41:29 -0700
committerChad Versace <chad@chad-versace.us>2011-06-01 19:13:22 -0700
commit60cf489a16ab2611d3e50b46ba6bd5f5a4bff717 (patch)
tree72dcf62642f3c44d8dd6a7c48b0dcc1250f16904
parent8b22896d56737b38476b483f219c07c521f3213c (diff)
hiz: Add tests for stencil buffer reads
Add the following tests: hiz-stencil-read-fbo-d0-s8.c hiz-stencil-read-fbo-d24-s8.c hiz-stencil-read-fbo-d24s8.c hiz-stencil-read-window-depth0.c hiz-stencil-read-window-depth1.c These tests check that stencil reads work correctly when rendering to various framebuffer configurations, including FBO's and window framebuffers. Signed-off-by: Chad Versace <chad.versace@intel.com>
-rw-r--r--tests/all.tests5
-rw-r--r--tests/hiz/CMakeLists.gl.txt5
-rw-r--r--tests/hiz/hiz-stencil-read-fbo-d0-s8.c66
-rw-r--r--tests/hiz/hiz-stencil-read-fbo-d24-s8.c67
-rw-r--r--tests/hiz/hiz-stencil-read-fbo-d24s8.c66
-rw-r--r--tests/hiz/hiz-stencil-read-window-depth0.c57
-rw-r--r--tests/hiz/hiz-stencil-read-window-depth1.c57
-rw-r--r--tests/hiz/hiz-util.c136
-rw-r--r--tests/hiz/hiz-util.h31
9 files changed, 490 insertions, 0 deletions
diff --git a/tests/all.tests b/tests/all.tests
index a5b54d12..ba8adc2c 100644
--- a/tests/all.tests
+++ b/tests/all.tests
@@ -1053,6 +1053,11 @@ add_plain_test(hiz, 'hiz-depth-test-fbo-d24-s8')
add_plain_test(hiz, 'hiz-depth-test-fbo-d24s8')
add_plain_test(hiz, 'hiz-depth-test-window-stencil0')
add_plain_test(hiz, 'hiz-depth-test-window-stencil1')
+add_plain_test(hiz, 'hiz-stencil-read-fbo-d0-s8')
+add_plain_test(hiz, 'hiz-stencil-read-fbo-d24-s8')
+add_plain_test(hiz, 'hiz-stencil-read-fbo-d24s8')
+add_plain_test(hiz, 'hiz-stencil-read-window-depth0')
+add_plain_test(hiz, 'hiz-stencil-read-window-depth1')
add_plain_test(hiz, 'hiz-stencil-test-fbo-d0-s8')
add_plain_test(hiz, 'hiz-stencil-test-fbo-d24-s8')
add_plain_test(hiz, 'hiz-stencil-test-fbo-d24s8')
diff --git a/tests/hiz/CMakeLists.gl.txt b/tests/hiz/CMakeLists.gl.txt
index d9ba5b2b..98222c58 100644
--- a/tests/hiz/CMakeLists.gl.txt
+++ b/tests/hiz/CMakeLists.gl.txt
@@ -29,6 +29,11 @@ add_executable(hiz-depth-test-fbo-d24-s8 hiz-depth-test-fbo-d24-s8.c)
add_executable(hiz-depth-test-fbo-d24s8 hiz-depth-test-fbo-d24s8.c)
add_executable(hiz-depth-test-window-stencil0 hiz-depth-test-window-stencil0.c)
add_executable(hiz-depth-test-window-stencil1 hiz-depth-test-window-stencil1.c)
+add_executable(hiz-stencil-read-fbo-d0-s8 hiz-stencil-read-fbo-d0-s8.c)
+add_executable(hiz-stencil-read-fbo-d24-s8 hiz-stencil-read-fbo-d24-s8.c)
+add_executable(hiz-stencil-read-fbo-d24s8 hiz-stencil-read-fbo-d24s8.c)
+add_executable(hiz-stencil-read-window-depth0 hiz-stencil-read-window-depth0.c)
+add_executable(hiz-stencil-read-window-depth1 hiz-stencil-read-window-depth1.c)
add_executable(hiz-stencil-test-fbo-d0-s8 hiz-stencil-test-fbo-d0-s8.c)
add_executable(hiz-stencil-test-fbo-d24-s8 hiz-stencil-test-fbo-d24-s8.c)
add_executable(hiz-stencil-test-fbo-d24s8 hiz-stencil-test-fbo-d24s8.c)
diff --git a/tests/hiz/hiz-stencil-read-fbo-d0-s8.c b/tests/hiz/hiz-stencil-read-fbo-d0-s8.c
new file mode 100644
index 00000000..20a14364
--- /dev/null
+++ b/tests/hiz/hiz-stencil-read-fbo-d0-s8.c
@@ -0,0 +1,66 @@
+/*
+ * 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.
+ *
+ * Authors:
+ * Chad Versace <chad.versace@intel.com>
+ */
+
+/**
+ * \file hiz-stencil-read-fbo-d0-s8.c
+ *
+ * Check that 1) correct values are written to and that 2) expected values are
+ * read back from the stencil buffer when using an FBO with the following
+ * attachments:
+ * - GL_COLOR_ATTACHMENT0: GL_RGBA
+ * - GL_STENCIL_ATTACHMENT: GL_STENCIL_INDEX8
+ *
+ * \author Chad Versace <chad.versace@intel.com>
+ */
+
+#include "piglit-util.h"
+#include "hiz/hiz-util.h"
+
+int piglit_width = 400;
+int piglit_height = 400;
+int piglit_window_mode = GLUT_RGB;
+
+struct hiz_fbo_options fbo_options = {
+ GL_RGBA,
+ 0,
+ GL_STENCIL_INDEX8,
+ 0,
+};
+
+void
+piglit_init(int argc, char **argv)
+{
+ /* empty */
+}
+
+enum piglit_result
+piglit_display()
+{
+ if (hiz_run_test_stencil_read_fbo(&fbo_options))
+ return PIGLIT_PASS;
+ else
+ return PIGLIT_FAIL;
+}
diff --git a/tests/hiz/hiz-stencil-read-fbo-d24-s8.c b/tests/hiz/hiz-stencil-read-fbo-d24-s8.c
new file mode 100644
index 00000000..fdee0657
--- /dev/null
+++ b/tests/hiz/hiz-stencil-read-fbo-d24-s8.c
@@ -0,0 +1,67 @@
+/*
+ * 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.
+ *
+ * Authors:
+ * Chad Versace <chad.versace@intel.com>
+ */
+
+/**
+ * \file hiz-stencil-read-fbo-d24-s8.c
+ *
+ * Check that 1) correct values are written to and that 2) expected values are
+ * read back from the stencil buffer when using an FBO with the following
+ * attachments:
+ * - GL_COLOR_ATTACHMENT0: GL_RGBA
+ * - GL_DEPTH_ATTACHMENT: GL_DEPTH_COMPONENT24
+ * - GL_STENCIL_ATTACHMENT: GL_STENCIL_INDEX8
+ *
+ * \author Chad Versace <chad.versace@intel.com>
+ */
+
+#include "piglit-util.h"
+#include "hiz/hiz-util.h"
+
+int piglit_width = 400;
+int piglit_height = 400;
+int piglit_window_mode = GLUT_RGB;
+
+struct hiz_fbo_options fbo_options = {
+ GL_RGBA,
+ GL_DEPTH_COMPONENT24,
+ GL_STENCIL_INDEX8,
+ 0,
+};
+
+void
+piglit_init(int argc, char **argv)
+{
+ /* empty */
+}
+
+enum piglit_result
+piglit_display()
+{
+ if (hiz_run_test_stencil_read_fbo(&fbo_options))
+ return PIGLIT_PASS;
+ else
+ return PIGLIT_FAIL;
+}
diff --git a/tests/hiz/hiz-stencil-read-fbo-d24s8.c b/tests/hiz/hiz-stencil-read-fbo-d24s8.c
new file mode 100644
index 00000000..19d94923
--- /dev/null
+++ b/tests/hiz/hiz-stencil-read-fbo-d24s8.c
@@ -0,0 +1,66 @@
+/*
+ * 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.
+ *
+ * Authors:
+ * Chad Versace <chad.versace@intel.com>
+ */
+
+/**
+ * \file hiz-stencil-read-fbo-d24s8.c
+ *
+ * Check that 1) correct values are written to and that 2) expected values are
+ * read back from the stencil buffer when using an FBO with the following
+ * attachments:
+ * - GL_COLOR_ATTACHMENT0: GL_RGBA
+ * - GL_DEPTH_STENCIL_ATTACHMENT: GL_DEPTH24_STENCIL8
+ *
+ * \author Chad Versace <chad.versace@intel.com>
+ */
+
+#include "piglit-util.h"
+#include "hiz/hiz-util.h"
+
+int piglit_width = 400;
+int piglit_height = 400;
+int piglit_window_mode = GLUT_RGB;
+
+struct hiz_fbo_options fbo_options = {
+ GL_RGBA,
+ 0,
+ 0,
+ GL_DEPTH24_STENCIL8,
+};
+
+void
+piglit_init(int argc, char **argv)
+{
+ /* empty */
+}
+
+enum piglit_result
+piglit_display()
+{
+ if (hiz_run_test_stencil_read_fbo(&fbo_options))
+ return PIGLIT_PASS;
+ else
+ return PIGLIT_FAIL;
+}
diff --git a/tests/hiz/hiz-stencil-read-window-depth0.c b/tests/hiz/hiz-stencil-read-window-depth0.c
new file mode 100644
index 00000000..b4e21b21
--- /dev/null
+++ b/tests/hiz/hiz-stencil-read-window-depth0.c
@@ -0,0 +1,57 @@
+/*
+ * 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.
+ *
+ * Authors:
+ * Chad Versace <chad.versace@intel.com>
+ */
+
+/**
+ * \file hiz-stencil-read-window-depth0.c
+ *
+ * Check that 1) correct values are written to and that 2) expected values are
+ * read back from the stencil buffer when using a window framebuffer for which
+ * no depth buffer was requested.
+ *
+ * \author Chad Versace <chad.versace@intel.com>
+ */
+
+#include "piglit-util.h"
+#include "hiz/hiz-util.h"
+
+int piglit_width = 400;
+int piglit_height = 400;
+int piglit_window_mode = GLUT_RGB | GLUT_ALPHA | GLUT_STENCIL;
+
+void
+piglit_init(int argc, char **argv)
+{
+ /* empty */
+}
+
+enum piglit_result
+piglit_display()
+{
+ if (hiz_run_test_stencil_read_window())
+ return PIGLIT_PASS;
+ else
+ return PIGLIT_FAIL;
+}
diff --git a/tests/hiz/hiz-stencil-read-window-depth1.c b/tests/hiz/hiz-stencil-read-window-depth1.c
new file mode 100644
index 00000000..c2650fc8
--- /dev/null
+++ b/tests/hiz/hiz-stencil-read-window-depth1.c
@@ -0,0 +1,57 @@
+/*
+ * 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.
+ *
+ * Authors:
+ * Chad Versace <chad.versace@intel.com>
+ */
+
+/**
+ * \file hiz-stencil-read-window-depth0.c
+ *
+ * Check that 1) correct values are written to and that 2) expected values are
+ * read back from the stencil buffer when using a window framebuffer with a
+ * depth buffer.
+ *
+ * \author Chad Versace <chad.versace@intel.com>
+ */
+
+#include "piglit-util.h"
+#include "hiz/hiz-util.h"
+
+int piglit_width = 400;
+int piglit_height = 400;
+int piglit_window_mode = GLUT_RGB | GLUT_ALPHA | GLUT_STENCIL | GLUT_DEPTH;
+
+void
+piglit_init(int argc, char **argv)
+{
+ /* empty */
+}
+
+enum piglit_result
+piglit_display()
+{
+ if (hiz_run_test_stencil_read_window())
+ return PIGLIT_PASS;
+ else
+ return PIGLIT_FAIL;
+}
diff --git a/tests/hiz/hiz-util.c b/tests/hiz/hiz-util.c
index 60df8c96..0ef382e1 100644
--- a/tests/hiz/hiz-util.c
+++ b/tests/hiz/hiz-util.c
@@ -64,6 +64,12 @@ hiz_probe_depth_buffer(const float expected_depths[])
hiz_probe_common(piglit_probe_rect_depth, expected_depths);
}
+bool
+hiz_probe_stencil_buffer(const unsigned expected_stencil[])
+{
+ hiz_probe_common(piglit_probe_rect_stencil, expected_stencil);
+}
+
GLuint
hiz_make_fbo(const struct hiz_fbo_options *options)
@@ -406,3 +412,133 @@ hiz_run_test_stencil_test_window()
}
/** \} */
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * \name hiz_run_stencil_read utilties
+ *
+ * Utilities for testing the reading of the stencil buffer.
+ *
+ * \{
+ */
+
+/**
+ * Common functionality needed by hiz_run_test_stencil_read_fbo() and
+ * hiz_run_test_stencil_read_window().
+ */
+static bool
+hiz_run_test_stencil_read_common()
+{
+ static const float *expected_colors[9] = {
+ hiz_green,
+ hiz_green,
+ hiz_grey,
+
+ hiz_green,
+ hiz_blue,
+ hiz_grey,
+
+ hiz_grey,
+ hiz_blue,
+ hiz_grey,
+ };
+
+ static const unsigned expected_stencil[9] = {
+ 5,
+ 5,
+ 3,
+
+ 5,
+ 6,
+ 4,
+
+ 4,
+ 5,
+ 4,
+ };
+
+ const float dx = piglit_width / 3.0;
+ const float dy = piglit_height / 3.0;
+
+ /* Set up depth state. */
+ glDisable(GL_DEPTH_TEST);
+ glClearDepth(hiz_clear_z);
+
+ /* Set up stencil state. */
+ glEnable(GL_STENCIL_TEST);
+ glClearStencil(3); /* 3 is a good canary. */
+ glStencilFunc(GL_LESS, 3, ~0);
+ glStencilOp(GL_INCR, GL_INCR, GL_INCR);
+
+ glClearColor(hiz_grey[0], hiz_grey[1], hiz_grey[2], hiz_grey[3]);
+ glClear(GL_COLOR_BUFFER_BIT
+ | GL_DEPTH_BUFFER_BIT
+ | GL_STENCIL_BUFFER_BIT);
+
+ glViewport(0, 0, piglit_width, piglit_height);
+ piglit_ortho_projection(piglit_width, piglit_height, false);
+
+ /* Draw rect 1. */
+ glColor4fv(hiz_grey);
+ piglit_draw_rect(0 * dx, 0 * dy, /* x, y */
+ 2 * dx, 3 * dy); /* w, h */
+
+ /* Draw rect 2. */
+ glColor4fv(hiz_green);
+ piglit_draw_rect(0 * dx, 0 * dy, /* x, y */
+ 2 * dx, 2 * dy); /* w, h */
+
+ /* Draw rect 3. */
+ glColor4fv(hiz_blue);
+ piglit_draw_rect(1 * dx, 1 * dy, /* x, y */
+ 2 * dx, 2 * dy); /* w, h */
+
+ assert(!glGetError());
+
+ if (!hiz_probe_color_buffer(expected_colors))
+ return false;
+ return hiz_probe_stencil_buffer(expected_stencil);
+}
+
+bool
+hiz_run_test_stencil_read_fbo(const struct hiz_fbo_options *fbo_options)
+{
+ bool pass = true;
+ GLuint fbo = 0;
+
+ piglit_require_extension("GL_ARB_framebuffer_object");
+
+ /* Create and bind FBO. */
+ fbo = hiz_make_fbo(fbo_options);
+ assert(fbo != 0);
+ glBindFramebuffer(GL_DRAW_FRAMEBUFFER, fbo);
+ glBindFramebuffer(GL_READ_FRAMEBUFFER, fbo);
+
+ pass = hiz_run_test_stencil_read_common();
+
+ if (!piglit_automatic) {
+ /* Blit the FBO to the window FB so we can see the results. */
+ glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
+ glBlitFramebuffer(0, 0, piglit_width, piglit_height,
+ 0, 0, piglit_width, piglit_height,
+ GL_COLOR_BUFFER_BIT, GL_NEAREST);
+ glutSwapBuffers();
+ glBindFramebuffer(GL_DRAW_FRAMEBUFFER, fbo);
+ }
+
+ hiz_delete_fbo(fbo);
+
+ return pass;
+}
+
+bool
+hiz_run_test_stencil_read_window()
+{
+ bool pass = hiz_run_test_stencil_read_common();
+ if (!piglit_automatic)
+ glutSwapBuffers();
+ return pass;
+}
+
+/** \} */
diff --git a/tests/hiz/hiz-util.h b/tests/hiz/hiz-util.h
index 1aac16f8..d2281e48 100644
--- a/tests/hiz/hiz-util.h
+++ b/tests/hiz/hiz-util.h
@@ -71,6 +71,14 @@ bool hiz_probe_color_buffer(const float *expected_colors[]);
*/
bool hiz_probe_depth_buffer(const float expected_depths[]);
+/**
+ * \brief Probe the stencil buffer.
+ * \param expected_stencil Array of 9 ints.
+ * \return True if all probes pass.
+ * \see hiz_probe_color_buffer()
+ */
+bool hiz_probe_stencil_buffer(const unsigned expected_stencil[]);
+
GLuint hiz_make_fbo(const struct hiz_fbo_options *options);
/**
@@ -118,3 +126,26 @@ bool hiz_run_test_stencil_test_fbo(const struct hiz_fbo_options *options);
* \see hiz_run_test_stencil_test_fbo()
*/
bool hiz_run_test_stencil_test_window();
+
+/**
+ * \brief Test reading the stencil buffer of an FBO.
+ *
+ * First, probe the color buffer to check that stencil testing worked as
+ * expected. If it did not, then immediately report test failure and do not
+ * probe the stencil buffer. If stencil testing misbehaved, we cannot expect
+ * the stencil buffer to hold the expected values.
+ *
+ * For this test, stencil test is enabled and depth test disabled.
+ *
+ * \param options Perform the test with an FBO with the given formats.
+ * \return True if test passed.
+ */
+bool hiz_run_test_stencil_read_fbo(const struct hiz_fbo_options *options);
+
+/**
+ * \brief Test reading the stencil buffer of the window framebuffer.
+ *
+ * \return True if test passed.
+ * \see hiz_run_test_stencil_read_fbo()
+ */
+bool hiz_run_test_stencil_read_window();