Mesa (gallium-context-transfers): r300g: fix compilation after merge

Keith Whitwell keithw at kemper.freedesktop.org
Thu Mar 11 12:31:41 UTC 2010


Module: Mesa
Branch: gallium-context-transfers
Commit: e80836878a3617b0e350d2a8f92311832a1476cb
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=e80836878a3617b0e350d2a8f92311832a1476cb

Author: Keith Whitwell <keithw at vmware.com>
Date:   Thu Mar 11 12:30:47 2010 +0000

r300g: fix compilation after merge

---

 src/gallium/drivers/r300/r300_context.c  |    3 +
 src/gallium/drivers/r300/r300_screen.c   |   78 ------------------------------
 src/gallium/drivers/r300/r300_transfer.c |   39 ++++++++-------
 src/gallium/drivers/r300/r300_transfer.h |    4 +-
 4 files changed, 28 insertions(+), 96 deletions(-)

diff --git a/src/gallium/drivers/r300/r300_context.c b/src/gallium/drivers/r300/r300_context.c
index 923e1e5..8606c00 100644
--- a/src/gallium/drivers/r300/r300_context.c
+++ b/src/gallium/drivers/r300/r300_context.c
@@ -34,6 +34,7 @@
 #include "r300_screen.h"
 #include "r300_state_invariant.h"
 #include "r300_texture.h"
+#include "r300_transfer.h"
 
 #include "radeon_winsys.h"
 
@@ -209,6 +210,8 @@ struct pipe_context* r300_create_context(struct pipe_screen* screen,
 
     r300_init_query_functions(r300);
 
+    r300_init_transfer_functions(r300);
+
     /* r300_init_surface_functions(r300); */
 
     r300_init_state_functions(r300);
diff --git a/src/gallium/drivers/r300/r300_screen.c b/src/gallium/drivers/r300/r300_screen.c
index 60e300f..69c0ab4 100644
--- a/src/gallium/drivers/r300/r300_screen.c
+++ b/src/gallium/drivers/r300/r300_screen.c
@@ -27,7 +27,6 @@
 
 #include "r300_context.h"
 #include "r300_texture.h"
-#include "r300_transfer.h"
 
 #include "radeon_winsys.h"
 #include "r300_winsys.h"
@@ -252,82 +251,6 @@ static boolean r300_is_format_supported(struct pipe_screen* screen,
     return retval == usage;
 }
 
-static struct pipe_transfer*
-r300_get_tex_transfer(struct pipe_context *pipe,
-                      struct pipe_texture *texture,
-                      unsigned face, unsigned level, unsigned zslice,
-                      enum pipe_transfer_usage usage, unsigned x, unsigned y,
-                      unsigned w, unsigned h)
-{
-    struct r300_texture *tex = (struct r300_texture *)texture;
-    struct r300_screen *rscreen = r300_screen(pipe->screen);    
-    struct r300_transfer *trans;
-    unsigned offset;
-
-    offset = r300_texture_get_offset(tex, level, zslice, face);  /* in bytes */
-
-    trans = CALLOC_STRUCT(r300_transfer);
-    if (trans) {
-        pipe_texture_reference(&trans->transfer.texture, texture);
-        trans->transfer.pipe = pipe;
-        trans->transfer.x = x;
-        trans->transfer.y = y;
-        trans->transfer.width = w;
-        trans->transfer.height = h;
-        trans->transfer.stride = r300_texture_get_stride(rscreen, tex, level);
-        trans->transfer.usage = usage;
-        trans->transfer.zslice = zslice;
-        trans->transfer.face = face;
-
-        trans->offset = offset;
-    }
-    return &trans->transfer;
-}
-
-static void
-r300_tex_transfer_destroy(struct pipe_transfer *trans)
-{
-   pipe_texture_reference(&trans->texture, NULL);
-   FREE(trans);
-}
-
-/* XXX: For uploads interleaved with drawing, could set up a DMA
- * transfer instead of mapping the underlying storage.  This would
- * allow uploads to in-flight textures without stalling the GPU.
- */
-static void* r300_transfer_map(struct pipe_context *pipe,
-                              struct pipe_transfer* transfer)
-{
-    struct r300_texture* tex = (struct r300_texture*)transfer->texture;
-    char* map;
-    enum pipe_format format = tex->tex.format;
-
-    map = pipe_buffer_map(pipe->screen, tex->buffer,
-                          pipe_transfer_buffer_flags(transfer));
-
-    if (!map) {
-        return NULL;
-    }
-
-    return map + r300_transfer(transfer)->offset +
-        transfer->y / util_format_get_blockheight(format) * transfer->stride +
-        transfer->x / util_format_get_blockwidth(format) * util_format_get_blocksize(format);
-}
-
-static void r300_transfer_unmap(struct pipe_context *pipe,
-                                struct pipe_transfer* transfer)
-{
-    struct r300_texture* tex = (struct r300_texture*)transfer->texture;
-    pipe_buffer_unmap(pipe->screen, tex->buffer);
-}
-
-void r300_init_tex_functions( struct pipe_context *pipe )
-{
-   pipe->get_tex_transfer = r300_get_tex_transfer;
-   pipe->tex_transfer_destroy = r300_tex_transfer_destroy;
-   pipe->transfer_map = r300_transfer_map;
-   pipe->transfer_unmap = r300_transfer_unmap;
-}
 
 
 static void r300_destroy_screen(struct pipe_screen* pscreen)
@@ -368,7 +291,6 @@ struct pipe_screen* r300_create_screen(struct radeon_winsys* radeon_winsys)
     r300screen->screen.context_create = r300_create_context;
 
     r300_init_screen_texture_functions(&r300screen->screen);
-    r300_init_screen_transfer_functions(&r300screen->screen);
     u_simple_screen_init(&r300screen->screen);
 
     return &r300screen->screen;
diff --git a/src/gallium/drivers/r300/r300_transfer.c b/src/gallium/drivers/r300/r300_transfer.c
index ec89681..7dd707f 100644
--- a/src/gallium/drivers/r300/r300_transfer.c
+++ b/src/gallium/drivers/r300/r300_transfer.c
@@ -118,15 +118,15 @@ static void r300_copy_into_tiled_texture(struct pipe_context *ctx,
 }
 
 static struct pipe_transfer*
-r300_get_tex_transfer(struct pipe_screen *screen,
+r300_get_tex_transfer(struct pipe_context *ctx,
                       struct pipe_texture *texture,
                       unsigned face, unsigned level, unsigned zslice,
                       enum pipe_transfer_usage usage, unsigned x, unsigned y,
                       unsigned w, unsigned h)
 {
     struct r300_texture *tex = (struct r300_texture *)texture;
+    struct r300_screen *r300screen = r300_screen(ctx->screen);
     struct r300_transfer *trans;
-    struct r300_screen *r300screen = r300_screen(screen);
     struct pipe_texture template;
 
     trans = CALLOC_STRUCT(r300_transfer);
@@ -136,7 +136,7 @@ r300_get_tex_transfer(struct pipe_screen *screen,
         trans->transfer.usage = usage;
         trans->transfer.width = w;
         trans->transfer.height = h;
-        trans->ctx = r300screen->ctx;
+        trans->ctx = ctx;
         trans->x = x;
         trans->y = y;
         trans->level = level;
@@ -174,8 +174,10 @@ r300_get_tex_transfer(struct pipe_screen *screen,
             }
 
             /* Create the temporary texture. */
-            trans->detiled_texture =
-                (struct r300_texture*)screen->texture_create(screen, &template);
+            trans->detiled_texture = (struct r300_texture*)
+               ctx->screen->texture_create(ctx->screen,
+                                           &template);
+
             assert(!trans->detiled_texture->microtile &&
                    !trans->detiled_texture->macrotile);
 
@@ -187,7 +189,7 @@ r300_get_tex_transfer(struct pipe_screen *screen,
             if (usage & PIPE_TRANSFER_READ) {
                 /* We cannot map a tiled texture directly because the data is
                  * in a different order, therefore we do detiling using a blit. */
-                r300_copy_from_tiled_texture(r300screen->ctx, trans);
+                r300_copy_from_tiled_texture(ctx, trans);
             }
         } else {
             trans->transfer.x = x;
@@ -219,7 +221,7 @@ static void r300_tex_transfer_destroy(struct pipe_transfer *trans)
     FREE(trans);
 }
 
-static void* r300_transfer_map(struct pipe_screen *screen,
+static void* r300_transfer_map(struct pipe_context *ctx,
                                struct pipe_transfer *transfer)
 {
     struct r300_transfer *r300transfer = r300_transfer(transfer);
@@ -230,12 +232,12 @@ static void* r300_transfer_map(struct pipe_screen *screen,
     if (r300transfer->detiled_texture) {
         /* The detiled texture is of the same size as the region being mapped
          * (no offset needed). */
-        return pipe_buffer_map(screen,
+        return pipe_buffer_map(ctx->screen,
                                r300transfer->detiled_texture->buffer,
                                pipe_transfer_buffer_flags(transfer));
     } else {
         /* Tiling is disabled. */
-        map = pipe_buffer_map(screen, tex->buffer,
+        map = pipe_buffer_map(ctx->screen, tex->buffer,
                               pipe_transfer_buffer_flags(transfer));
 
         if (!map) {
@@ -248,23 +250,26 @@ static void* r300_transfer_map(struct pipe_screen *screen,
     }
 }
 
-static void r300_transfer_unmap(struct pipe_screen *screen,
+static void r300_transfer_unmap(struct pipe_context *ctx,
                                 struct pipe_transfer *transfer)
 {
     struct r300_transfer *r300transfer = r300_transfer(transfer);
     struct r300_texture *tex = (struct r300_texture*)transfer->texture;
 
     if (r300transfer->detiled_texture) {
-        pipe_buffer_unmap(screen, r300transfer->detiled_texture->buffer);
+        pipe_buffer_unmap(ctx->screen, r300transfer->detiled_texture->buffer);
     } else {
-        pipe_buffer_unmap(screen, tex->buffer);
+        pipe_buffer_unmap(ctx->screen, tex->buffer);
     }
 }
 
-void r300_init_screen_transfer_functions(struct pipe_screen *screen)
+
+void r300_init_transfer_functions( struct r300_context *r300ctx )
 {
-    screen->get_tex_transfer = r300_get_tex_transfer;
-    screen->tex_transfer_destroy = r300_tex_transfer_destroy;
-    screen->transfer_map = r300_transfer_map;
-    screen->transfer_unmap = r300_transfer_unmap;
+   struct pipe_context *ctx = &r300ctx->context;
+
+   ctx->get_tex_transfer = r300_get_tex_transfer;
+   ctx->tex_transfer_destroy = r300_tex_transfer_destroy;
+   ctx->transfer_map = r300_transfer_map;
+   ctx->transfer_unmap = r300_transfer_unmap;
 }
diff --git a/src/gallium/drivers/r300/r300_transfer.h b/src/gallium/drivers/r300/r300_transfer.h
index 60d1d3d..79baf6d 100644
--- a/src/gallium/drivers/r300/r300_transfer.h
+++ b/src/gallium/drivers/r300/r300_transfer.h
@@ -26,6 +26,8 @@
 
 #include "pipe/p_screen.h"
 
-void r300_init_screen_transfer_functions(struct pipe_screen *screen);
+struct r300_context;
+
+void r300_init_transfer_functions(struct r300_context *r300ctx);
 
 #endif




More information about the mesa-commit mailing list