diff options
author | Nanley Chery <nanley.g.chery@intel.com> | 2016-11-15 16:42:23 -0800 |
---|---|---|
committer | Emil Velikov <emil.l.velikov@gmail.com> | 2016-12-16 12:01:23 +0000 |
commit | 63bdcc5c88441c4226d3717a5fb51e01b144bc2f (patch) | |
tree | e46a9062387721cb576a90a87fd47e074084d9d6 /src | |
parent | fb9f0a1197e10f9b1c727b5b2956f36827308ad1 (diff) | |
download | external_mesa3d-63bdcc5c88441c4226d3717a5fb51e01b144bc2f.zip external_mesa3d-63bdcc5c88441c4226d3717a5fb51e01b144bc2f.tar.gz external_mesa3d-63bdcc5c88441c4226d3717a5fb51e01b144bc2f.tar.bz2 |
mesa/fbobject: Update CubeMapFace when reusing textures
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@intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
(cherry picked from commit 63318d34acd4a5edb271d57adf3b01e2e52552f8)
Diffstat (limited to 'src')
-rw-r--r-- | src/mesa/main/fbobject.c | 1 |
1 files changed, 1 insertions, 0 deletions
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; } |