summaryrefslogtreecommitdiffstats
path: root/src/mesa/main/fbobject.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mesa/main/fbobject.c')
-rw-r--r--src/mesa/main/fbobject.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c
index d84680868f4..7ecc48ee53b 100644
--- a/src/mesa/main/fbobject.c
+++ b/src/mesa/main/fbobject.c
@@ -877,8 +877,9 @@ _mesa_test_framebuffer_completeness(struct gl_context *ctx,
GLint fixedSampleLocations = -1;
GLint i;
GLuint j;
- bool layer_count_valid = false;
+ bool layer_info_valid = false; /* Covers layer_count and layer_tex_target */
GLuint layer_count = 0, att_layer_count;
+ GLenum layer_tex_target = 0;
assert(_mesa_is_user_fbo(fb));
@@ -1062,9 +1063,14 @@ _mesa_test_framebuffer_completeness(struct gl_context *ctx,
} else {
att_layer_count = 0;
}
- if (!layer_count_valid) {
+ if (!layer_info_valid) {
layer_count = att_layer_count;
- layer_count_valid = true;
+ layer_tex_target = att_tex_target;
+ layer_info_valid = true;
+ } else if (layer_count > 0 && layer_tex_target != att_tex_target) {
+ fb->_Status = GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS;
+ fbo_incomplete(ctx, "layered framebuffer has mismatched targets", i);
+ return;
} else if (layer_count != att_layer_count) {
if (layer_count == 0 || att_layer_count == 0) {
fb->_Status = GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS;