From 15b2f69b9c7d573bc978241da50549be4d3f2aca Mon Sep 17 00:00:00 2001 From: Kenneth Graunke Date: Wed, 5 Mar 2014 20:55:51 -0800 Subject: [PATCH] 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 Reviewed-by: Matt Turner Reviewed-by: Anuj Phogat Reviewed-by: Ian Romanick --- .../drivers/common/meta_generate_mipmap.c | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/mesa/drivers/common/meta_generate_mipmap.c b/src/mesa/drivers/common/meta_generate_mipmap.c index 5bdf1270bca..6ca6f228976 100644 --- a/src/mesa/drivers/common/meta_generate_mipmap.c +++ b/src/mesa/drivers/common/meta_generate_mipmap.c @@ -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);