st/mesa: convert sub image for cube map arrays to 2d arrays for upload
authorDave Airlie <airlied@redhat.com>
Wed, 8 Apr 2015 00:59:20 +0000 (10:59 +1000)
committerDave Airlie <airlied@redhat.com>
Mon, 13 Apr 2015 22:04:21 +0000 (08:04 +1000)
Since we can subimage upload a number of cube map array layers,
that aren't a complete cube map array, we should specify things
as a 2D array and blit from that.

Suggested by Ilia Mirkin as an alternate fix for texsubimage
cube map array issues.

seems to work just as well.

Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
src/mesa/state_tracker/st_cb_texture.c

index 5c520b44f8d792d8bd623e4f750d4eea44b574e6..353f80db1cb1a9d2828f0a22e97dd98d84baf008 100644 (file)
@@ -738,6 +738,11 @@ st_TexSubImage(struct gl_context *ctx, GLuint dims,
    if (gl_target == GL_TEXTURE_CUBE_MAP) {
       gl_target = GL_TEXTURE_2D;
    }
+   /* TexSubImage can specify subsets of cube map array faces
+    * so we need to upload via 2D array instead */
+   if (gl_target == GL_TEXTURE_CUBE_MAP_ARRAY) {
+      gl_target = GL_TEXTURE_2D_ARRAY;
+   }
 
    /* Initialize the source texture description. */
    memset(&src_templ, 0, sizeof(src_templ));