gallium: remove pipe_buffer from surfaces
[mesa.git] / src / mesa / state_tracker / st_gen_mipmap.c
index b9d114b1c97c982b9847628b69fac53a3cadf0f0..6a3455aaba213ec7d4a921bbd91ea97eb152d066 100644 (file)
@@ -128,24 +128,24 @@ fallback_generate_mipmap(GLcontext *ctx, GLenum target,
       dstSurf = screen->get_tex_surface(screen, pt, face, dstLevel, zslice,
                                         PIPE_BUFFER_USAGE_CPU_WRITE);
 
-      srcData = (ubyte *) pipe_buffer_map(pipe->screen, srcSurf->buffer,
-                                          PIPE_BUFFER_USAGE_CPU_READ)
+      srcData = (ubyte *) pipe_surface_map(srcSurf,
+                                           PIPE_BUFFER_USAGE_CPU_READ)
               + srcSurf->offset;
-      dstData = (ubyte *) pipe_buffer_map(pipe->screen, dstSurf->buffer,
-                                          PIPE_BUFFER_USAGE_CPU_WRITE)
+      dstData = (ubyte *) pipe_surface_map(dstSurf,
+                                           PIPE_BUFFER_USAGE_CPU_WRITE)
               + dstSurf->offset;
 
       _mesa_generate_mipmap_level(target, datatype, comps,
                    0 /*border*/,
                    pt->width[srcLevel], pt->height[srcLevel], pt->depth[srcLevel],
-                   srcSurf->stride, /* stride in bytes */
                    srcData,
+                   srcSurf->stride, /* stride in bytes */
                    pt->width[dstLevel], pt->height[dstLevel], pt->depth[dstLevel],
-                   dstSurf->stride, /* stride in bytes */
-                   dstData);
+                   dstData,
+                   dstSurf->stride); /* stride in bytes */
 
-      pipe_buffer_unmap(pipe->screen, srcSurf->buffer);
-      pipe_buffer_unmap(pipe->screen, dstSurf->buffer);
+      pipe_surface_unmap(srcSurf);
+      pipe_surface_unmap(dstSurf);
 
       pipe_surface_reference(&srcSurf, NULL);
       pipe_surface_reference(&dstSurf, NULL);
@@ -160,9 +160,14 @@ st_generate_mipmap(GLcontext *ctx, GLenum target,
    struct st_context *st = ctx->st;
    struct pipe_texture *pt = st_get_texobj_texture(texObj);
    const uint baseLevel = texObj->BaseLevel;
-   const uint lastLevel = pt->last_level;
+   uint lastLevel;
    uint dstLevel;
 
+   if (!pt)
+      return;
+
+   lastLevel = pt->last_level;
+
    if (!st_render_mipmap(st, target, pt, baseLevel, lastLevel)) {
       fallback_generate_mipmap(ctx, target, texObj);
    }