[Mesa-dev] [PATCH] fbo-depth-array:Check completness with a color texture
Vincent Lejeune
vljn at ovi.com
Wed Oct 8 05:33:45 PDT 2014
---
tests/all.py | 2 +-
tests/fbo/fbo-depth-array.c | 36 ++++++++++++++++++++++++++++++------
2 files changed, 31 insertions(+), 7 deletions(-)
diff --git a/tests/all.py b/tests/all.py
index 586cead..9aa600f 100644
--- a/tests/all.py
+++ b/tests/all.py
@@ -2831,7 +2831,7 @@ add_shader_test_dir(ext_texture_array,
add_msaa_visual_plain_tests(ext_texture_array, 'copyteximage 1D_ARRAY')
add_msaa_visual_plain_tests(ext_texture_array, 'copyteximage 2D_ARRAY')
add_plain_test(ext_texture_array, 'fbo-array')
-for test in ('depth-clear', 'depth-layered-clear', 'depth-draw', 'fs-writes-depth',
+for test in ('depth-clear', 'depth-layered-clear', 'depth-stencil-color-clear', 'depth-draw', 'fs-writes-depth',
'stencil-clear', 'stencil-layered-clear', 'stencil-draw', 'fs-writes-stencil'):
add_concurrent_test(ext_texture_array, 'fbo-depth-array ' + test)
add_plain_test(ext_texture_array, 'array-texture')
diff --git a/tests/fbo/fbo-depth-array.c b/tests/fbo/fbo-depth-array.c
index 84370e4..dde807d 100644
--- a/tests/fbo/fbo-depth-array.c
+++ b/tests/fbo/fbo-depth-array.c
@@ -46,6 +46,7 @@
enum {
CLEAR,
LAYERED_CLEAR,
+ LAYERED_DEPTH_STENCIL_COLOR_CLEAR,
DRAW,
FS_WRITES_VALUE,
};
@@ -135,11 +136,13 @@ static GLuint program_stencil_output;
static GLuint program_texdepth;
static GLuint program_texstencil;
+static GLuint color_texture;
+
static float
get_depth_value(unsigned layer)
{
- if (test == LAYERED_CLEAR)
+ if (test == LAYERED_CLEAR || LAYERED_DEPTH_STENCIL_COLOR_CLEAR)
return 0.4; /* constant */
else
return (double)(layer+1) / (layers+1);
@@ -181,6 +184,10 @@ parse_args(int argc, char **argv)
test = LAYERED_CLEAR;
puts("Testing layered glClear");
}
+ else if (!strcmp(argv[i], "depth-stencil-color-layered-clear")) {
+ test = LAYERED_DEPTH_STENCIL_COLOR_CLEAR;
+ puts("Testing depth stencil color layered glClear");
+ }
else if (!strcmp(argv[i], "depth-draw")) {
test = DRAW;
puts("Testing drawing");
@@ -224,6 +231,14 @@ create_array_fbo(void)
int layer;
glGenTextures(1, &tex);
+ glGenTextures(1, &color_texture);
+
+ glBindTexture(GL_TEXTURE_2D_ARRAY, color_texture);
+ glTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_RGBA,
+ width, height, layers, 0,
+ GL_RGBA, GL_UNSIGNED_INT, NULL);
+ assert(glGetError() == 0);
+
glBindTexture(GL_TEXTURE_2D_ARRAY, tex);
assert(glGetError() == 0);
@@ -241,11 +256,19 @@ create_array_fbo(void)
/* draw something into each layer of the array texture */
for (layer = 0; layer < layers; layer++) {
- if (test == LAYERED_CLEAR) {
- glFramebufferTexture(GL_FRAMEBUFFER,
- test_stencil ? GL_STENCIL_ATTACHMENT :
- GL_DEPTH_ATTACHMENT,
- tex, 0);
+ if (test == LAYERED_CLEAR || test == LAYERED_DEPTH_STENCIL_COLOR_CLEAR) {
+ if (test == LAYERED_DEPTH_STENCIL_COLOR_CLEAR) {
+ glFramebufferTexture(GL_FRAMEBUFFER,
+ GL_COLOR_ATTACHMENT0_EXT,
+ color_texture, 0);
+ glFramebufferTexture(GL_FRAMEBUFFER,
+ GL_DEPTH_STENCIL_ATTACHMENT,
+ tex, 0);
+ } else
+ glFramebufferTexture(GL_FRAMEBUFFER,
+ test_stencil ? GL_STENCIL_ATTACHMENT :
+ GL_DEPTH_ATTACHMENT,
+ tex, 0);
status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
if (status != GL_FRAMEBUFFER_COMPLETE) {
@@ -433,6 +456,7 @@ test_once(void)
}
glDeleteTextures(1, &tex);
+ glDeleteTextures(1, &color_texture);
assert(glGetError() == 0);
return pass;
}
--
1.9.3
More information about the mesa-dev
mailing list