[Mesa-stable] [Mesa-dev] [PATCH] mesa/fbobject: Update CubeMapFace when reusing textures
Brian Paul
brianp at vmware.com
Wed Nov 16 23:45:07 UTC 2016
On 11/16/2016 04:33 PM, Nanley Chery wrote:
> Framebuffer attachments can be specified through FramebufferTexture*
> calls. Upon specifying a depth (or stencil) framebuffer attachment that
> internally reuses a texture, the cube map face of the new attachment
> would not be updated (defaulting to TEXTURE_CUBE_MAP_POSITIVE_X).
> Fix this issue by actually updating the CubeMapFace field.
>
> This bug manifested itself in BindFramebuffer calls performed on
> framebuffers whose stencil attachments internally reused a depth
> texture. When binding a framebuffer, we walk through the framebuffer's
> attachments and update each one's corresponding gl_renderbuffer. Since
> the framebuffer's depth and stencil attachments may share a
> gl_renderbuffer and the walk visits the stencil attachment after
> the depth attachment, the uninitialized CubeMapFace forced rendering
> to TEXTURE_CUBE_MAP_POSITIVE_X.
>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=77662
> Signed-off-by: Nanley Chery <nanley.g.chery at intel.com>
> Cc: "12.0 13.0" <mesa-stable at lists.freedesktop.org>
>
> ---
>
> This piglit patch will help catch this error in the future:
> https://lists.freedesktop.org/archives/piglit/2016-November/021480.html
>
> src/mesa/main/fbobject.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c
> index 9204606..64c4ab5 100644
> --- a/src/mesa/main/fbobject.c
> +++ b/src/mesa/main/fbobject.c
> @@ -2850,6 +2850,7 @@ reuse_framebuffer_texture_attachment(struct gl_framebuffer *fb,
> dst_att->Type = src_att->Type;
> dst_att->Complete = src_att->Complete;
> dst_att->TextureLevel = src_att->TextureLevel;
> + dst_att->CubeMapFace = src_att->CubeMapFace;
> dst_att->Zoffset = src_att->Zoffset;
> dst_att->Layered = src_att->Layered;
> }
>
Reviewed-by: Brian Paul <brianp at vmware.com>
More information about the mesa-stable
mailing list