Typo in subject line: "ans" -> "and"

-Brian

On 12/12/2014 07:14 AM, Iago Toral Quiroga wrote:
"9.4. FRAMEBUFFER COMPLETENESS
  ...
  Depth and stencil attachments, if present, are the same image."

Notice that this restriction is not included in the OpenGL ES2 spec.

Fixes 18 dEQP tests in:
dEQP-GLES3.functional.fbo.completeness.attachment_combinations.*
---
  src/mesa/main/fbobject.c | 20 ++++++++++++++++++++
  1 file changed, 20 insertions(+)

diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c
index 6bc7fec..daf76cb 100644
--- a/src/mesa/main/fbobject.c
+++ b/src/mesa/main/fbobject.c
@@ -886,6 +886,8 @@ _mesa_test_framebuffer_completeness(struct gl_context *ctx,
     GLuint max_layer_count = 0, att_layer_count;
     bool is_layered = false;
     GLenum layer_tex_target = 0;
+   bool has_depth_attachment = false;
+   bool has_stencil_attachment = false;

     assert(_mesa_is_user_fbo(fb));

@@ -923,6 +925,8 @@ _mesa_test_framebuffer_completeness(struct gl_context *ctx,
              fb->_Status = GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT;
              fbo_incomplete(ctx, "depth attachment incomplete", -1);
              return;
+         } else if (att->Type != GL_NONE) {
+            has_depth_attachment = true;
           }
        }
        else if (i == -1) {
@@ -932,6 +936,8 @@ _mesa_test_framebuffer_completeness(struct gl_context *ctx,
              fb->_Status = GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT;
              fbo_incomplete(ctx, "stencil attachment incomplete", -1);
              return;
+         } else if (att->Type != GL_NONE) {
+            has_stencil_attachment = true;
           }
        }
        else {
@@ -1128,6 +1134,20 @@ _mesa_test_framebuffer_completeness(struct gl_context 
*ctx,
        }
     }

+   /* The OpenGL ES3 spec, in chapter 9.4. FRAMEBUFFER COMPLETENESS, says:
+    *
+    *    "Depth and stencil attachments, if present, are the same image."
+    *
+    * This restriction is not present in the OpenGL ES2 spec.
+    */
+   if (_mesa_is_gles3(ctx) &&
+       has_stencil_attachment && has_depth_attachment &&
+       !_mesa_has_depthstencil_combined(fb)) {
+      fb->_Status = GL_FRAMEBUFFER_UNSUPPORTED;
+      fbo_incomplete(ctx, "Depth and stencil attachments must be the same 
image", -1);
+      return;
+   }
+
     /* Provisionally set status = COMPLETE ... */
     fb->_Status = GL_FRAMEBUFFER_COMPLETE_EXT;



_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to