Mesa (master): r300g: output texture debug messages if only RADEON_DEBUG= tex is set

Corbin Simpson csimpson at kemper.freedesktop.org
Sun Jan 17 09:14:57 UTC 2010


Module: Mesa
Branch: master
Commit: 8959608051ef8e4a97214323009d09c5e9e633fb
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=8959608051ef8e4a97214323009d09c5e9e633fb

Author: Marek Olšák <maraeo at gmail.com>
Date:   Sat Jan  9 19:19:44 2010 +0100

r300g: output texture debug messages if only RADEON_DEBUG=tex is set

---

 src/gallium/drivers/r300/r300_context.c         |    2 +-
 src/gallium/drivers/r300/r300_screen.c          |    6 +--
 src/gallium/drivers/r300/r300_texture.c         |   37 +++++++++++++---------
 src/gallium/drivers/r300/r300_texture.h         |    6 ++-
 src/gallium/drivers/r300/r300_winsys.h          |    3 +-
 src/gallium/winsys/drm/radeon/core/radeon_drm.c |    7 ++--
 src/gallium/winsys/drm/radeon/core/radeon_drm.h |    1 +
 7 files changed, 36 insertions(+), 26 deletions(-)

diff --git a/src/gallium/drivers/r300/r300_context.c b/src/gallium/drivers/r300/r300_context.c
index 6bd2b02..94a9ab3 100644
--- a/src/gallium/drivers/r300/r300_context.c
+++ b/src/gallium/drivers/r300/r300_context.c
@@ -87,7 +87,7 @@ r300_is_texture_referenced(struct pipe_context *pipe,
 {
     struct pipe_buffer* buf = 0;
 
-    r300_get_texture_buffer(texture, &buf, NULL);
+    r300_get_texture_buffer(pipe->screen, texture, &buf, NULL);
 
     return pipe->is_buffer_referenced(pipe, buf);
 }
diff --git a/src/gallium/drivers/r300/r300_screen.c b/src/gallium/drivers/r300/r300_screen.c
index e16d659..d0f2c13 100644
--- a/src/gallium/drivers/r300/r300_screen.c
+++ b/src/gallium/drivers/r300/r300_screen.c
@@ -319,6 +319,7 @@ r300_get_tex_transfer(struct pipe_screen *screen,
 {
     struct r300_texture *tex = (struct r300_texture *)texture;
     struct r300_transfer *trans;
+    struct r300_screen *rscreen = r300_screen(screen);
     unsigned offset;
 
     offset = r300_texture_get_offset(tex, level, zslice, face);  /* in bytes */
@@ -330,11 +331,8 @@ r300_get_tex_transfer(struct pipe_screen *screen,
         trans->transfer.y = y;
         trans->transfer.width = w;
         trans->transfer.height = h;
-        trans->transfer.stride = r300_texture_get_stride(tex, level);
+        trans->transfer.stride = r300_texture_get_stride(rscreen, tex, level);
         trans->transfer.usage = usage;
-
-        /* XXX not sure whether it's required to set these two,
-               the driver doesn't use them */
         trans->transfer.zslice = zslice;
         trans->transfer.face = face;
 
diff --git a/src/gallium/drivers/r300/r300_texture.c b/src/gallium/drivers/r300/r300_texture.c
index a9bbdd5..c6dd272 100644
--- a/src/gallium/drivers/r300/r300_texture.c
+++ b/src/gallium/drivers/r300/r300_texture.c
@@ -42,10 +42,11 @@ static const unsigned microblock_table[5][3][2] = {
     {{ 2, 1}, {0, 0}, {0, 0}}  /* 128 bits per pixel */
 };
 
-static void r300_setup_texture_state(struct r300_texture* tex, boolean is_r500)
+static void r300_setup_texture_state(struct r300_screen* screen, struct r300_texture* tex)
 {
     struct r300_texture_state* state = &tex->state;
     struct pipe_texture *pt = &tex->tex;
+    boolean is_r500 = screen->caps->is_r500;
 
     state->format0 = R300_TX_WIDTH((pt->width0 - 1) & 0x7ff) |
                      R300_TX_HEIGHT((pt->height0 - 1) & 0x7ff);
@@ -79,8 +80,8 @@ static void r300_setup_texture_state(struct r300_texture* tex, boolean is_r500)
     }
     assert(is_r500 || (pt->width0 <= 2048 && pt->height0 <= 2048));
 
-    debug_printf("r300: Set texture state (%dx%d, %d levels)\n",
-		 pt->width0, pt->height0, pt->last_level);
+    SCREEN_DBG(screen, DBG_TEX, "r300: Set texture state (%dx%d, %d levels)\n",
+               pt->width0, pt->height0, pt->last_level);
 }
 
 unsigned r300_texture_get_offset(struct r300_texture* tex, unsigned level,
@@ -123,7 +124,8 @@ static unsigned r300_texture_get_tile_size(struct r300_texture* tex, int dim)
  * Return the stride, in bytes, of the texture images of the given texture
  * at the given level.
  */
-unsigned r300_texture_get_stride(struct r300_texture* tex, unsigned level)
+unsigned r300_texture_get_stride(struct r300_screen* screen,
+                                 struct r300_texture* tex, unsigned level)
 {
     unsigned tile_width, width;
 
@@ -132,8 +134,8 @@ unsigned r300_texture_get_stride(struct r300_texture* tex, unsigned level)
 
     /* Check the level. */
     if (level > tex->tex.last_level) {
-        debug_printf("%s: level (%u) > last_level (%u)\n", __FUNCTION__,
-            level, tex->tex.last_level);
+        SCREEN_DBG(screen, DBG_TEX, "%s: level (%u) > last_level (%u)\n",
+                   __FUNCTION__, level, tex->tex.last_level);
         return 0;
     }
 
@@ -155,15 +157,17 @@ static unsigned r300_texture_get_nblocksy(struct r300_texture* tex,
     return util_format_get_nblocksy(tex->tex.format, height);
 }
 
-static void r300_setup_miptree(struct r300_texture* tex)
+static void r300_setup_miptree(struct r300_screen* screen,
+                               struct r300_texture* tex)
 {
     struct pipe_texture* base = &tex->tex;
     unsigned stride, size, layer_size, nblocksy, i;
 
-    debug_printf("r300: Making miptree for texture, format %s\n", pf_name(base->format));
+    SCREEN_DBG(screen, DBG_TEX, "r300: Making miptree for texture, format %s\n",
+               pf_name(base->format));
 
     for (i = 0; i <= base->last_level; i++) {
-        stride = r300_texture_get_stride(tex, i);
+        stride = r300_texture_get_stride(screen, tex, i);
         nblocksy = r300_texture_get_nblocksy(tex, i);
         layer_size = stride * nblocksy;
 
@@ -177,7 +181,7 @@ static void r300_setup_miptree(struct r300_texture* tex)
         tex->layer_size[i] = layer_size;
         tex->pitch[i] = stride / util_format_get_blocksize(base->format);
 
-        debug_printf("r300: Texture miptree: Level %d "
+        SCREEN_DBG(screen, DBG_TEX, "r300: Texture miptree: Level %d "
                 "(%dx%dx%d px, pitch %d bytes) %d bytes total\n",
                 i, u_minify(base->width0, i), u_minify(base->height0, i),
                 u_minify(base->depth0, i), stride, tex->size);
@@ -196,6 +200,7 @@ static struct pipe_texture*
                         const struct pipe_texture* template)
 {
     struct r300_texture* tex = CALLOC_STRUCT(r300_texture);
+    struct r300_screen* rscreen = r300_screen(screen);
 
     if (!tex) {
         return NULL;
@@ -206,8 +211,8 @@ static struct pipe_texture*
     tex->tex.screen = screen;
 
     r300_setup_flags(tex);
-    r300_setup_miptree(tex);
-    r300_setup_texture_state(tex, r300_screen(screen)->caps->is_r500);
+    r300_setup_miptree(rscreen, tex);
+    r300_setup_texture_state(rscreen, tex);
 
     tex->buffer = screen->buffer_create(screen, 2048,
                                         PIPE_BUFFER_USAGE_PIXEL,
@@ -273,6 +278,7 @@ static struct pipe_texture*
                          struct pipe_buffer* buffer)
 {
     struct r300_texture* tex;
+    struct r300_screen* rscreen = r300_screen(screen);
 
     /* Support only 2D textures without mipmaps */
     if (base->target != PIPE_TEXTURE_2D ||
@@ -294,7 +300,7 @@ static struct pipe_texture*
     tex->pitch[0] = *stride / util_format_get_blocksize(base->format);
 
     r300_setup_flags(tex);
-    r300_setup_texture_state(tex, r300_screen(screen)->caps->is_r500);
+    r300_setup_texture_state(rscreen, tex);
 
     pipe_buffer_reference(&tex->buffer, buffer);
 
@@ -361,7 +367,8 @@ void r300_init_screen_texture_functions(struct pipe_screen* screen)
     screen->video_surface_destroy= r300_video_surface_destroy;
 }
 
-boolean r300_get_texture_buffer(struct pipe_texture* texture,
+boolean r300_get_texture_buffer(struct pipe_screen* screen,
+                                struct pipe_texture* texture,
                                 struct pipe_buffer** buffer,
                                 unsigned* stride)
 {
@@ -373,7 +380,7 @@ boolean r300_get_texture_buffer(struct pipe_texture* texture,
     pipe_buffer_reference(buffer, tex->buffer);
 
     if (stride) {
-        *stride = r300_texture_get_stride(tex, 0);
+        *stride = r300_texture_get_stride(r300_screen(screen), tex, 0);
     }
 
     return TRUE;
diff --git a/src/gallium/drivers/r300/r300_texture.h b/src/gallium/drivers/r300/r300_texture.h
index 55ceb1a..1be1e68 100644
--- a/src/gallium/drivers/r300/r300_texture.h
+++ b/src/gallium/drivers/r300/r300_texture.h
@@ -31,7 +31,8 @@ struct r300_texture;
 
 void r300_init_screen_texture_functions(struct pipe_screen* screen);
 
-unsigned r300_texture_get_stride(struct r300_texture* tex, unsigned level);
+unsigned r300_texture_get_stride(struct r300_screen* screen,
+                                 struct r300_texture* tex, unsigned level);
 
 unsigned r300_texture_get_offset(struct r300_texture* tex, unsigned level,
                                  unsigned zslice, unsigned face);
@@ -115,7 +116,8 @@ r300_video_surface(struct pipe_video_surface *pvs)
 
 #ifndef R300_WINSYS_H
 
-boolean r300_get_texture_buffer(struct pipe_texture* texture,
+boolean r300_get_texture_buffer(struct pipe_screen* screen,
+                                struct pipe_texture* texture,
                                 struct pipe_buffer** buffer,
                                 unsigned* stride);
 
diff --git a/src/gallium/drivers/r300/r300_winsys.h b/src/gallium/drivers/r300/r300_winsys.h
index 1ae6de7..bdb8b54 100644
--- a/src/gallium/drivers/r300/r300_winsys.h
+++ b/src/gallium/drivers/r300/r300_winsys.h
@@ -40,7 +40,8 @@ extern "C" {
 struct pipe_context* r300_create_context(struct pipe_screen* screen,
                                          struct radeon_winsys* radeon_winsys);
 
-boolean r300_get_texture_buffer(struct pipe_texture* texture,
+boolean r300_get_texture_buffer(struct pipe_screen* screen,
+                                struct pipe_texture* texture,
                                 struct pipe_buffer** buffer,
                                 unsigned* stride);
 
diff --git a/src/gallium/winsys/drm/radeon/core/radeon_drm.c b/src/gallium/winsys/drm/radeon/core/radeon_drm.c
index 851c223..dd73b33 100644
--- a/src/gallium/winsys/drm/radeon/core/radeon_drm.c
+++ b/src/gallium/winsys/drm/radeon/core/radeon_drm.c
@@ -136,12 +136,13 @@ struct pipe_context* radeon_create_context(struct drm_api* api,
 }
 
 boolean radeon_buffer_from_texture(struct drm_api* api,
+                                   struct pipe_screen* screen,
                                    struct pipe_texture* texture,
                                    struct pipe_buffer** buffer,
                                    unsigned* stride)
 {
     /* XXX fix this */
-    return r300_get_texture_buffer(texture, buffer, stride);
+    return r300_get_texture_buffer(screen, texture, buffer, stride);
 }
 
 /* Create a buffer from a handle. */
@@ -208,7 +209,7 @@ static boolean radeon_shared_handle_from_texture(struct drm_api *api,
     struct radeon_pipe_buffer* radeon_buffer;
     struct pipe_buffer *buffer = NULL;
 
-    if (!radeon_buffer_from_texture(api, texture, &buffer, stride)) {
+    if (!radeon_buffer_from_texture(api, screen, texture, &buffer, stride)) {
         return FALSE;
     }
 
@@ -240,7 +241,7 @@ static boolean radeon_local_handle_from_texture(struct drm_api *api,
                                                 unsigned *handle)
 {
     struct pipe_buffer *buffer = NULL;
-    if (!radeon_buffer_from_texture(api, texture, &buffer, stride)) {
+    if (!radeon_buffer_from_texture(api, screen, texture, &buffer, stride)) {
         return FALSE;
     }
 
diff --git a/src/gallium/winsys/drm/radeon/core/radeon_drm.h b/src/gallium/winsys/drm/radeon/core/radeon_drm.h
index bf0e781..28f2ba8 100644
--- a/src/gallium/winsys/drm/radeon/core/radeon_drm.h
+++ b/src/gallium/winsys/drm/radeon/core/radeon_drm.h
@@ -56,6 +56,7 @@ struct pipe_context* radeon_create_context(struct drm_api* api,
                                            struct pipe_screen* screen);
 
 boolean radeon_buffer_from_texture(struct drm_api* api,
+                                   struct pipe_screen* screen,
                                    struct pipe_texture* texture,
                                    struct pipe_buffer** buffer,
                                    unsigned* stride);




More information about the mesa-commit mailing list