[Mesa-dev] [PATCH 2/4] i965: be more specific about FBO completeness errors

andrey simiklit asimiklit.work at gmail.com
Mon Nov 19 09:00:27 UTC 2018


Hello,

I tried to compile latest mesa master this morning but faced with a
compilation error:
   intel_fbo.c: In function ‘intel_validate_framebuffer’:
   intel_fbo.c:696:25: error: ‘GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS’
undeclared (first use in this function); did you mean
‘GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT’?
         fbo_incomplete(fb, GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS,
                            ^
   intel_fbo.c:642:21: note: in definition of macro ‘fbo_incomplete’
          fb->_Status =
error_id;                                                 \
                        ^~~~~~~~
   intel_fbo.c:696:25: note: each undeclared identifier is reported only
once for each function it appears in
         fbo_incomplete(fb, GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS,
                            ^
   intel_fbo.c:642:21: note: in definition of macro ‘fbo_incomplete’
          fb->_Status =
error_id;                                                 \

This small change helped me but I can't say for sure that it is right:
diff --git a/src/mesa/drivers/dri/i965/intel_fbo.c
b/src/mesa/drivers/dri/i965/intel_fbo.c
index febd1aca98..5d870c65f8 100644
--- a/src/mesa/drivers/dri/i965/intel_fbo.c
+++ b/src/mesa/drivers/dri/i965/intel_fbo.c
@@ -693,7 +693,7 @@ intel_validate_framebuffer(struct gl_context *ctx,
struct gl_framebuffer *fb)
              d_depth != s_depth ||
              depthRb->mt_level != stencilRb->mt_level ||
             depthRb->mt_layer != stencilRb->mt_layer) {
-           fbo_incomplete(fb, GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS,
+           fbo_incomplete(fb, GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT,
                            "FBO incomplete: depth and stencil must match
in"
                            "width, height, depth, LOD and layer\n");
         }

Thanks,
Andrii.

On Thu, Nov 15, 2018 at 8:01 PM Gert Wollny <gert.wollny at collabora.com>
wrote:

> The driver was returning GL_FRAMEBUFFER_UNSUPPORTED for all cases of an
> incomplete fbo, be a bit more specific about this following the description
> of glCheckFramebufferStatus.
>
> This helps to keeps dEQP happy when adding EXT_texture_sRGB_R8 support.
>
> Signed-off-by: Gert Wollny <gert.wollny at collabora.com>
> ---
>  src/mesa/drivers/dri/i965/intel_fbo.c | 42 +++++++++++++++------------
>  1 file changed, 23 insertions(+), 19 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/i965/intel_fbo.c
> b/src/mesa/drivers/dri/i965/intel_fbo.c
> index 2bbbc34114..d657fdf8e4 100644
> --- a/src/mesa/drivers/dri/i965/intel_fbo.c
> +++ b/src/mesa/drivers/dri/i965/intel_fbo.c
> @@ -629,7 +629,7 @@ intel_render_texture(struct gl_context * ctx,
>  }
>
>
> -#define fbo_incomplete(fb, ...) do {
>     \
> +#define fbo_incomplete(fb, error_id, ...) do {
>               \
>        static GLuint msg_id = 0;
>      \
>        if (unlikely(ctx->Const.ContextFlags & GL_CONTEXT_FLAG_DEBUG_BIT))
> {    \
>           _mesa_gl_debug(ctx, &msg_id,
>      \
> @@ -639,7 +639,7 @@ intel_render_texture(struct gl_context * ctx,
>                          __VA_ARGS__);
>      \
>        }
>      \
>        DBG(__VA_ARGS__);
>      \
> -      fb->_Status = GL_FRAMEBUFFER_UNSUPPORTED;
>      \
> +      fb->_Status = error_id;
>      \
>     } while (0)
>
>  /**
> @@ -693,7 +693,7 @@ intel_validate_framebuffer(struct gl_context *ctx,
> struct gl_framebuffer *fb)
>               d_depth != s_depth ||
>               depthRb->mt_level != stencilRb->mt_level ||
>              depthRb->mt_layer != stencilRb->mt_layer) {
> -           fbo_incomplete(fb,
> +           fbo_incomplete(fb, GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS,
>                             "FBO incomplete: depth and stencil must match
> in"
>                             "width, height, depth, LOD and layer\n");
>          }
> @@ -705,7 +705,7 @@ intel_validate_framebuffer(struct gl_context *ctx,
> struct gl_framebuffer *fb)
>           */
>          if (depthRb->mt_level != stencilRb->mt_level ||
>              depthRb->mt_layer != stencilRb->mt_layer) {
> -           fbo_incomplete(fb,
> +           fbo_incomplete(fb, GL_FRAMEBUFFER_UNSUPPORTED,
>                             "FBO incomplete: depth image level/layer %d/%d
> != "
>                             "stencil image %d/%d\n",
>                             depthRb->mt_level,
> @@ -715,13 +715,14 @@ intel_validate_framebuffer(struct gl_context *ctx,
> struct gl_framebuffer *fb)
>          }
>        } else {
>          if (!brw->has_separate_stencil) {
> -           fbo_incomplete(fb, "FBO incomplete: separate stencil "
> -                           "unsupported\n");
> +           fbo_incomplete(fb, GL_FRAMEBUFFER_UNSUPPORTED,
> +                      "FBO incomplete: separate stencil unsupported\n");
>          }
>          if (stencil_mt->format != MESA_FORMAT_S_UINT8) {
> -           fbo_incomplete(fb, "FBO incomplete: separate stencil is %s "
> -                           "instead of S8\n",
> -                           _mesa_get_format_name(stencil_mt->format));
> +           fbo_incomplete(fb, GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT,
> +                      "FBO incomplete: separate stencil is %s "
> +                      "instead of S8\n",
> +                      _mesa_get_format_name(stencil_mt->format));
>          }
>          if (devinfo->gen < 7 && !intel_renderbuffer_has_hiz(depthRb)) {
>             /* Before Gen7, separate depth and stencil buffers can be used
> @@ -730,8 +731,8 @@ intel_validate_framebuffer(struct gl_context *ctx,
> struct gl_framebuffer *fb)
>              *     [DevSNB]: This field must be set to the same value
> (enabled
>              *     or disabled) as Hierarchical Depth Buffer Enable.
>              */
> -           fbo_incomplete(fb, "FBO incomplete: separate stencil "
> -                           "without HiZ\n");
> +           fbo_incomplete(fb, GL_FRAMEBUFFER_UNSUPPORTED,
> +                          "FBO incomplete: separate stencil without
> HiZ\n");
>          }
>        }
>     }
> @@ -749,29 +750,32 @@ intel_validate_framebuffer(struct gl_context *ctx,
> struct gl_framebuffer *fb)
>         */
>        rb = fb->Attachment[i].Renderbuffer;
>        if (rb == NULL) {
> -        fbo_incomplete(fb, "FBO incomplete: attachment without "
> -                        "renderbuffer\n");
> +        fbo_incomplete(fb, GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT,
> +                       "FBO incomplete: attachment without "
> +                       "renderbuffer\n");
>          continue;
>        }
>
>        if (fb->Attachment[i].Type == GL_TEXTURE) {
>          if (rb->TexImage->Border) {
> -           fbo_incomplete(fb, "FBO incomplete: texture with border\n");
> +           fbo_incomplete(fb, GL_FRAMEBUFFER_UNSUPPORTED,
> +                      "FBO incomplete: texture with border\n");
>             continue;
>          }
>        }
>
>        irb = intel_renderbuffer(rb);
>        if (irb == NULL) {
> -        fbo_incomplete(fb, "FBO incomplete: software rendering "
> -                        "renderbuffer\n");
> +        fbo_incomplete(fb, GL_FRAMEBUFFER_UNSUPPORTED,
> +                   "FBO incomplete: software rendering renderbuffer\n");
>          continue;
>        }
>
>        if (!brw_render_target_supported(brw, rb)) {
> -        fbo_incomplete(fb, "FBO incomplete: Unsupported HW "
> -                        "texture/renderbuffer format attached: %s\n",
> -                        _mesa_get_format_name(intel_rb_format(irb)));
> +        fbo_incomplete(fb, GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT,
> +                   "FBO incomplete: Unsupported HW "
> +                   "texture/renderbuffer format attached: %s\n",
> +                   _mesa_get_format_name(intel_rb_format(irb)));
>        }
>     }
>  }
> --
> 2.19.1
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20181119/057bf391/attachment-0001.html>


More information about the mesa-dev mailing list