gallium: in fallback_copy_texsubimage() create new tex surface for CPU read access
authorBrian Paul <brian.paul@tungstengraphics.com>
Wed, 13 Aug 2008 20:59:48 +0000 (14:59 -0600)
committerBrian Paul <brian.paul@tungstengraphics.com>
Wed, 13 Aug 2008 20:59:48 +0000 (14:59 -0600)
Was trying to use the strb->surface but it's made for GPU read/write only.

src/mesa/state_tracker/st_cb_texture.c

index 147ca5b1a2f0fb201c698d56fdabe376d791da19..fceb260d708008267e8d7030c22571d0a16664a4 100644 (file)
@@ -933,7 +933,12 @@ fallback_copy_texsubimage(GLcontext *ctx,
    struct pipe_texture *pt = stImage->pt;
    struct pipe_surface *src_surf, *dest_surf;
 
-   src_surf = strb->surface;
+   /* We'd use strb->surface, here but it's created for GPU read/write only */
+   src_surf = pipe->screen->get_tex_surface( pipe->screen,
+                                             strb->texture,
+                                             0, 0, 0,
+                                             PIPE_BUFFER_USAGE_CPU_READ);
+
    dest_surf = screen->get_tex_surface(screen, pt, face, level, destZ,
                                        PIPE_BUFFER_USAGE_CPU_WRITE);
 
@@ -1016,6 +1021,7 @@ fallback_copy_texsubimage(GLcontext *ctx,
    }
 
    screen->tex_surface_release(screen, &dest_surf);
+   screen->tex_surface_release(screen, &src_surf);
 }