meta: Add a 'layer' argument to bind_fbo_image().

For array textures and 3D textures, this represents the layer to use.
Just pass 0 for now.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
This commit is contained in:
Kenneth Graunke 2014-03-05 20:55:51 -08:00
parent be84d53d44
commit 15b2f69b9c
1 changed files with 11 additions and 9 deletions

View File

@ -48,7 +48,8 @@
* Bind a particular texture level/layer to mipmap->FBO's GL_COLOR_ATTACHMENT0.
*/
static void
bind_fbo_image(struct gl_texture_object *texObj, GLenum target, GLuint level)
bind_fbo_image(struct gl_texture_object *texObj, GLenum target,
GLuint level, GLuint layer)
{
switch (target) {
case GL_TEXTURE_1D:
@ -58,13 +59,14 @@ bind_fbo_image(struct gl_texture_object *texObj, GLenum target, GLuint level)
texObj->Name,
level);
break;
case GL_TEXTURE_1D_ARRAY:
case GL_TEXTURE_2D_ARRAY:
case GL_TEXTURE_3D:
_mesa_FramebufferTexture3D(GL_FRAMEBUFFER,
GL_COLOR_ATTACHMENT0,
target,
texObj->Name,
level,
0); /* XXX: Unfinished */
_mesa_FramebufferTextureLayer(GL_FRAMEBUFFER,
GL_COLOR_ATTACHMENT0,
texObj->Name,
level,
layer);
break;
default: /* 2D / cube */
_mesa_FramebufferTexture2D(GL_FRAMEBUFFER,
@ -135,7 +137,7 @@ fallback_required(struct gl_context *ctx, GLenum target,
_mesa_GenFramebuffers(1, &mipmap->FBO);
_mesa_BindFramebuffer(GL_FRAMEBUFFER_EXT, mipmap->FBO);
bind_fbo_image(texObj, target, srcLevel);
bind_fbo_image(texObj, target, srcLevel, 0);
status = _mesa_CheckFramebufferStatus(GL_FRAMEBUFFER_EXT);
@ -323,7 +325,7 @@ _mesa_meta_GenerateMipmap(struct gl_context *ctx, GLenum target,
/* limit minification to src level */
_mesa_TexParameteri(target, GL_TEXTURE_MAX_LEVEL, srcLevel);
bind_fbo_image(texObj, faceTarget, dstLevel);
bind_fbo_image(texObj, faceTarget, dstLevel, 0);
_mesa_DrawBuffer(GL_COLOR_ATTACHMENT0_EXT);