meta: Add a 'layer' argument to bind_fbo_image().
authorKenneth Graunke <kenneth@whitecape.org>
Thu, 6 Mar 2014 04:55:51 +0000 (20:55 -0800)
committerKenneth Graunke <kenneth@whitecape.org>
Sat, 8 Mar 2014 06:45:16 +0000 (22:45 -0800)
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>
src/mesa/drivers/common/meta_generate_mipmap.c

index 5bdf1270bcac53e57d2b058034f7ae8494649e08..6ca6f228976d47965096adea6e2efda1acf95f07 100644 (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);