radeonsi: print framebuffer info into ddebug logs
authorMarek Olšák <marek.olsak@amd.com>
Mon, 23 Nov 2015 12:30:23 +0000 (13:30 +0100)
committerMarek Olšák <marek.olsak@amd.com>
Thu, 3 Dec 2015 22:41:23 +0000 (23:41 +0100)
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
src/gallium/drivers/radeon/r600_pipe_common.h
src/gallium/drivers/radeon/r600_texture.c
src/gallium/drivers/radeonsi/si_debug.c

index cd2dd09d752eb462be5f601535c80cad1cbf70bf..8c6c0c37e50b03d6f384093983ec08890d2fec9e 100644 (file)
@@ -558,6 +558,7 @@ void r600_texture_get_cmask_info(struct r600_common_screen *rscreen,
 bool r600_init_flushed_depth_texture(struct pipe_context *ctx,
                                     struct pipe_resource *texture,
                                     struct r600_texture **staging);
+void r600_print_texture_info(struct r600_texture *rtex, FILE *f);
 struct pipe_resource *r600_texture_create(struct pipe_screen *screen,
                                        const struct pipe_resource *templ);
 struct pipe_surface *r600_create_surface_custom(struct pipe_context *pipe,
index bf0358bff12d2362e4de925ecadcfafca9e4df5a..e2947d9e3514c78d520c538b34967212f4f9f9ca 100644 (file)
@@ -598,8 +598,7 @@ static void r600_texture_allocate_htile(struct r600_common_screen *rscreen,
        }
 }
 
-static void
-r600_print_texture_info(struct r600_texture *rtex, FILE *f)
+void r600_print_texture_info(struct r600_texture *rtex, FILE *f)
 {
        int i;
 
index 53062187b8869e15bc57fdffe71719cc2ee64601..b2b1010923310ef902115cdc30cb1e599c1421bd 100644 (file)
@@ -528,6 +528,30 @@ static void si_dump_last_bo_list(struct si_context *sctx, FILE *f)
        sctx->last_bo_list = NULL;
 }
 
+static void si_dump_framebuffer(struct si_context *sctx, FILE *f)
+{
+       struct pipe_framebuffer_state *state = &sctx->framebuffer.state;
+       struct r600_texture *rtex;
+       int i;
+
+       for (i = 0; i < state->nr_cbufs; i++) {
+               if (!state->cbufs[i])
+                       continue;
+
+               rtex = (struct r600_texture*)state->cbufs[i]->texture;
+               fprintf(f, COLOR_YELLOW "Color buffer %i:" COLOR_RESET "\n", i);
+               r600_print_texture_info(rtex, f);
+               fprintf(f, "\n");
+       }
+
+       if (state->zsbuf) {
+               rtex = (struct r600_texture*)state->zsbuf->texture;
+               fprintf(f, COLOR_YELLOW "Depth-stencil buffer:" COLOR_RESET "\n");
+               r600_print_texture_info(rtex, f);
+               fprintf(f, "\n");
+       }
+}
+
 static void si_dump_debug_state(struct pipe_context *ctx, FILE *f,
                                unsigned flags)
 {
@@ -536,6 +560,7 @@ static void si_dump_debug_state(struct pipe_context *ctx, FILE *f,
        if (flags & PIPE_DEBUG_DEVICE_IS_HUNG)
                si_dump_debug_registers(sctx, f);
 
+       si_dump_framebuffer(sctx, f);
        si_dump_shader(&sctx->vs_shader, "Vertex", f);
        si_dump_shader(&sctx->tcs_shader, "Tessellation control", f);
        si_dump_shader(&sctx->tes_shader, "Tessellation evaluation", f);