st/mesa: Bail on incomplete attachments in discard_framebuffer
authorKenneth Graunke <kenneth@whitecape.org>
Fri, 20 Sep 2019 21:33:51 +0000 (14:33 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Mon, 23 Sep 2019 04:03:16 +0000 (21:03 -0700)
Incomplete attachments don't have an associated pipe_surface, so
this would crash.

Fixes a WebGL conformance test that uses incomplete attachments:
https://www.khronos.org/registry/webgl/sdk/tests/conformance2/renderbuffers/invalidate-framebuffer.html?webglVersion=2&quiet=0&quick=1

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=111756
Reviewed-By: Tapani Pälli <tapani.palli@intel.com>
src/mesa/state_tracker/st_cb_fbo.c

index bf23f4f3a8db321c0eb90c64b9100d807be14e1d..55546f9fab3728c46a2851d186eec05aee7fbe01 100644 (file)
@@ -778,7 +778,7 @@ st_discard_framebuffer(struct gl_context *ctx, struct gl_framebuffer *fb,
    struct st_context *st = st_context(ctx);
    struct pipe_resource *prsc;
 
-   if (!att->Renderbuffer)
+   if (!att->Renderbuffer || !att->Complete)
       return;
 
    prsc = st_renderbuffer(att->Renderbuffer)->surface->texture;