i965: Set the FBO error state INCOMPLETE_ATTACHMENT only for SRGB_R8
authorGert Wollny <gert.wollny@collabora.com>
Thu, 22 Nov 2018 18:00:03 +0000 (19:00 +0100)
committerGert Wollny <gw.fossdev@gmail.com>
Wed, 28 Nov 2018 09:12:47 +0000 (10:12 +0100)
Originally the driver reported GL_FRAMEBUFFER_UNSUPPORTED in all cases,
adding more specific error messages was not correct and broke many tests.
Mostly revert this and only report GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT
for MESA_FORMAT_R_SRGB8.

Fixes: ebcde3454552adc6d3fea8af2207aafaba857796
  i965: be more specific about FBO completeness errors

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=108805

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
src/mesa/drivers/dri/i965/intel_fbo.c

index 7e40d61a470cf0d7c8c8409cdc8c273580d6fbcc..5bcd846a1bcb686e15ff997d8e1e3807dccd8e45 100644 (file)
@@ -719,7 +719,7 @@ intel_validate_framebuffer(struct gl_context *ctx, struct gl_framebuffer *fb)
                       "FBO incomplete: separate stencil unsupported\n");
         }
         if (stencil_mt->format != MESA_FORMAT_S_UINT8) {
-           fbo_incomplete(fb, GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT,
+           fbo_incomplete(fb, GL_FRAMEBUFFER_UNSUPPORTED,
                       "FBO incomplete: separate stencil is %s "
                       "instead of S8\n",
                       _mesa_get_format_name(stencil_mt->format));
@@ -750,7 +750,7 @@ intel_validate_framebuffer(struct gl_context *ctx, struct gl_framebuffer *fb)
        */
       rb = fb->Attachment[i].Renderbuffer;
       if (rb == NULL) {
-        fbo_incomplete(fb, GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT,
+        fbo_incomplete(fb, GL_FRAMEBUFFER_UNSUPPORTED,
                        "FBO incomplete: attachment without "
                        "renderbuffer\n");
         continue;
@@ -771,8 +771,15 @@ intel_validate_framebuffer(struct gl_context *ctx, struct gl_framebuffer *fb)
         continue;
       }
 
+     if (rb->Format == MESA_FORMAT_R_SRGB8) {
+        fbo_incomplete(fb, GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT,
+                       "FBO incomplete: Format not color renderable: %s\n",
+                       _mesa_get_format_name(rb->Format));
+        continue;
+     }
+
       if (!brw_render_target_supported(brw, rb)) {
-        fbo_incomplete(fb, GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT,
+        fbo_incomplete(fb, GL_FRAMEBUFFER_UNSUPPORTED,
                    "FBO incomplete: Unsupported HW "
                    "texture/renderbuffer format attached: %s\n",
                    _mesa_get_format_name(intel_rb_format(irb)));