i915g: Rework debug print code
This commit is contained in:
@@ -31,7 +31,6 @@
|
||||
#include "i915_batch.h"
|
||||
#include "i915_debug.h"
|
||||
|
||||
#define FILE_DEBUG_FLAG DEBUG_BLIT
|
||||
|
||||
void
|
||||
i915_fill_blit(struct i915_context *i915,
|
||||
@@ -47,10 +46,8 @@ i915_fill_blit(struct i915_context *i915,
|
||||
unsigned BR13, CMD;
|
||||
|
||||
|
||||
I915_DBG(i915,
|
||||
"%s dst:buf(%p)/%d+%d %d,%d sz:%dx%d\n",
|
||||
__FUNCTION__,
|
||||
dst_buffer, dst_pitch, dst_offset, x, y, w, h);
|
||||
I915_DBG(DBG_BLIT, "%s dst:buf(%p)/%d+%d %d,%d sz:%dx%d\n",
|
||||
__FUNCTION__, dst_buffer, dst_pitch, dst_offset, x, y, w, h);
|
||||
|
||||
switch (cpp) {
|
||||
case 1:
|
||||
@@ -100,7 +97,7 @@ i915_copy_blit(struct i915_context *i915,
|
||||
int dst_x2 = dst_x + w;
|
||||
|
||||
|
||||
I915_DBG(i915,
|
||||
I915_DBG(DBG_BLIT,
|
||||
"%s src:buf(%p)/%d+%d %d,%d dst:buf(%p)/%d+%d %d,%d sz:%dx%d\n",
|
||||
__FUNCTION__,
|
||||
src_buffer, src_pitch, src_offset, src_x, src_y,
|
||||
|
@@ -237,8 +237,6 @@ struct i915_context
|
||||
|
||||
struct i915_state current;
|
||||
unsigned hardware_dirty;
|
||||
|
||||
unsigned debug;
|
||||
};
|
||||
|
||||
/* A flag for each state_tracker state object:
|
||||
|
@@ -27,11 +27,37 @@
|
||||
|
||||
#include "i915_reg.h"
|
||||
#include "i915_context.h"
|
||||
#include "i915_screen.h"
|
||||
#include "i915_debug.h"
|
||||
#include "i915_debug_private.h"
|
||||
#include "i915_batch.h"
|
||||
#include "util/u_debug.h"
|
||||
|
||||
|
||||
|
||||
static const struct debug_named_value debug_options[] = {
|
||||
{"blit", DBG_BLIT, "Print when using the 2d blitter"},
|
||||
{"emit", DBG_EMIT, "State emit information"},
|
||||
{"atoms", DBG_ATOMS, "Print dirty state atoms"},
|
||||
{"flush", DBG_FLUSH, "Flushing information"},
|
||||
{"texture", DBG_TEXTURE, "Texture information"},
|
||||
{"constants", DBG_CONSTANTS, "Constant buffers"},
|
||||
DEBUG_NAMED_VALUE_END
|
||||
};
|
||||
|
||||
unsigned i915_debug = 0;
|
||||
|
||||
void i915_debug_init(struct i915_screen *screen)
|
||||
{
|
||||
i915_debug = debug_get_flags_option("I915_DEBUG", debug_options, 0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* Batchbuffer dumping
|
||||
*/
|
||||
|
||||
static void
|
||||
PRINTF(
|
||||
struct debug_stream *stream,
|
||||
@@ -896,3 +922,66 @@ i915_dump_batchbuffer( struct i915_winsys_batchbuffer *batch )
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* Dirty state atom dumping
|
||||
*/
|
||||
|
||||
void
|
||||
i915_dump_dirty(struct i915_context *i915, const char *func)
|
||||
{
|
||||
struct {
|
||||
unsigned dirty;
|
||||
const char *name;
|
||||
} l[] = {
|
||||
{I915_NEW_VIEWPORT, "viewport"},
|
||||
{I915_NEW_RASTERIZER, "rasterizer"},
|
||||
{I915_NEW_FS, "fs"},
|
||||
{I915_NEW_BLEND, "blend"},
|
||||
{I915_NEW_CLIP, "clip"},
|
||||
{I915_NEW_SCISSOR, "scissor"},
|
||||
{I915_NEW_STIPPLE, "stipple"},
|
||||
{I915_NEW_FRAMEBUFFER, "framebuffer"},
|
||||
{I915_NEW_ALPHA_TEST, "alpha_test"},
|
||||
{I915_NEW_DEPTH_STENCIL, "depth_stencil"},
|
||||
{I915_NEW_SAMPLER, "sampler"},
|
||||
{I915_NEW_SAMPLER_VIEW, "sampler_view"},
|
||||
{I915_NEW_CONSTANTS, "constants"},
|
||||
{I915_NEW_VBO, "vbo"},
|
||||
{I915_NEW_VS, "vs"},
|
||||
{0, NULL},
|
||||
};
|
||||
int i;
|
||||
|
||||
debug_printf("%s: ", func);
|
||||
for (i = 0; l[i].name; i++)
|
||||
if (i915->dirty & l[i].dirty)
|
||||
debug_printf("%s ", l[i].name);
|
||||
debug_printf("\n");
|
||||
}
|
||||
|
||||
void
|
||||
i915_dump_hardware_dirty(struct i915_context *i915, const char *func)
|
||||
{
|
||||
struct {
|
||||
unsigned dirty;
|
||||
const char *name;
|
||||
} l[] = {
|
||||
{I915_HW_STATIC, "static"},
|
||||
{I915_HW_DYNAMIC, "dynamic"},
|
||||
{I915_HW_SAMPLER, "sampler"},
|
||||
{I915_HW_MAP, "map"},
|
||||
{I915_HW_PROGRAM, "program"},
|
||||
{I915_HW_CONSTANTS, "constants"},
|
||||
{I915_HW_IMMEDIATE, "immediate"},
|
||||
{I915_HW_INVARIENT, "invarient"},
|
||||
{0, NULL},
|
||||
};
|
||||
int i;
|
||||
|
||||
debug_printf("%s: ", func);
|
||||
for (i = 0; l[i].name; i++)
|
||||
if (i915->hardware_dirty & l[i].dirty)
|
||||
debug_printf("%s ", l[i].name);
|
||||
debug_printf("\n");
|
||||
}
|
||||
|
@@ -26,89 +26,51 @@
|
||||
**************************************************************************/
|
||||
|
||||
/* Authors: Keith Whitwell <keith@tungstengraphics.com>
|
||||
* Jakob Bornecrantz <wallbraker@gmail.com>
|
||||
*/
|
||||
|
||||
#ifndef I915_DEBUG_H
|
||||
#define I915_DEBUG_H
|
||||
|
||||
#include <stdarg.h>
|
||||
#include "util/u_debug.h"
|
||||
|
||||
struct i915_screen;
|
||||
struct i915_context;
|
||||
struct i915_winsys_batchbuffer;
|
||||
|
||||
struct debug_stream
|
||||
#define DBG_BLIT 0x1
|
||||
#define DBG_EMIT 0x2
|
||||
#define DBG_ATOMS 0x4
|
||||
#define DBG_FLUSH 0x8
|
||||
#define DBG_TEXTURE 0x10
|
||||
#define DBG_CONSTANTS 0x20
|
||||
|
||||
extern unsigned i915_debug;
|
||||
|
||||
static INLINE boolean
|
||||
I915_DBG_ON(unsigned flags)
|
||||
{
|
||||
unsigned offset; /* current gtt offset */
|
||||
char *ptr; /* pointer to gtt offset zero */
|
||||
char *end; /* pointer to gtt offset zero */
|
||||
unsigned print_addresses;
|
||||
};
|
||||
|
||||
|
||||
/* Internal functions
|
||||
*/
|
||||
void i915_disassemble_program(struct debug_stream *stream,
|
||||
const unsigned *program, unsigned sz);
|
||||
|
||||
void i915_print_ureg(const char *msg, unsigned ureg);
|
||||
|
||||
|
||||
#define DEBUG_BATCH 0x1
|
||||
#define DEBUG_BLIT 0x2
|
||||
#define DEBUG_BUFFER 0x4
|
||||
#define DEBUG_CONSTANTS 0x8
|
||||
#define DEBUG_CONTEXT 0x10
|
||||
#define DEBUG_DRAW 0x20
|
||||
#define DEBUG_DYNAMIC 0x40
|
||||
#define DEBUG_FLUSH 0x80
|
||||
#define DEBUG_MAP 0x100
|
||||
#define DEBUG_PROGRAM 0x200
|
||||
#define DEBUG_REGIONS 0x400
|
||||
#define DEBUG_SAMPLER 0x800
|
||||
#define DEBUG_STATIC 0x1000
|
||||
#define DEBUG_SURFACE 0x2000
|
||||
#define DEBUG_WINSYS 0x4000
|
||||
|
||||
#include "pipe/p_compiler.h"
|
||||
|
||||
#if defined(DEBUG) && defined(FILE_DEBUG_FLAG)
|
||||
|
||||
#include "util/u_simple_screen.h"
|
||||
return i915_debug & flags;
|
||||
}
|
||||
|
||||
static INLINE void
|
||||
I915_DBG(
|
||||
struct i915_context *i915,
|
||||
const char *fmt,
|
||||
... )
|
||||
I915_DBG(unsigned flags, const char *fmt, ...)
|
||||
{
|
||||
if ((i915)->debug & FILE_DEBUG_FLAG) {
|
||||
if (I915_DBG_ON(flags)) {
|
||||
va_list args;
|
||||
|
||||
va_start( args, fmt );
|
||||
debug_vprintf( fmt, args );
|
||||
va_end( args );
|
||||
va_start(args, fmt);
|
||||
debug_vprintf(fmt, args);
|
||||
va_end(args);
|
||||
}
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
static INLINE void
|
||||
I915_DBG(
|
||||
struct i915_context *i915,
|
||||
const char *fmt,
|
||||
... )
|
||||
{
|
||||
(void) i915;
|
||||
(void) fmt;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
struct i915_winsys_batchbuffer;
|
||||
|
||||
void i915_dump_batchbuffer( struct i915_winsys_batchbuffer *i915 );
|
||||
|
||||
void i915_debug_init( struct i915_context *i915 );
|
||||
void i915_debug_init(struct i915_screen *i915);
|
||||
|
||||
void i915_dump_batchbuffer(struct i915_winsys_batchbuffer *i915);
|
||||
|
||||
void i915_dump_dirty(struct i915_context *i915, const char *func);
|
||||
|
||||
void i915_dump_hardware_dirty(struct i915_context *i915, const char *func);
|
||||
|
||||
#endif
|
||||
|
@@ -28,6 +28,7 @@
|
||||
|
||||
#include "i915_reg.h"
|
||||
#include "i915_debug.h"
|
||||
#include "i915_debug_private.h"
|
||||
#include "util/u_debug.h"
|
||||
|
||||
|
||||
|
45
src/gallium/drivers/i915/i915_debug_private.h
Normal file
45
src/gallium/drivers/i915/i915_debug_private.h
Normal file
@@ -0,0 +1,45 @@
|
||||
/**************************************************************************
|
||||
*
|
||||
* Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, sub license, and/or sell copies of the Software, and to
|
||||
* permit persons to whom the Software is furnished to do so, subject to
|
||||
* the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice (including the
|
||||
* next paragraph) shall be included in all copies or substantial portions
|
||||
* of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
|
||||
* IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
|
||||
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
**************************************************************************/
|
||||
|
||||
/* Authors: Keith Whitwell <keith@tungstengraphics.com>
|
||||
*/
|
||||
|
||||
#ifndef I915_DEBUG_PRIVATE_H
|
||||
#define I915_DEBUG_PRIVATE_H
|
||||
|
||||
struct debug_stream
|
||||
{
|
||||
unsigned offset; /* current gtt offset */
|
||||
char *ptr; /* pointer to gtt offset zero */
|
||||
char *end; /* pointer to gtt offset zero */
|
||||
unsigned print_addresses;
|
||||
};
|
||||
|
||||
void i915_disassemble_program(struct debug_stream *stream,
|
||||
const unsigned *program, unsigned sz);
|
||||
|
||||
#endif
|
@@ -35,6 +35,7 @@
|
||||
#include "i915_context.h"
|
||||
#include "i915_reg.h"
|
||||
#include "i915_batch.h"
|
||||
#include "i915_debug.h"
|
||||
|
||||
|
||||
static void i915_flush( struct pipe_context *pipe,
|
||||
@@ -76,10 +77,10 @@ static void i915_flush( struct pipe_context *pipe,
|
||||
*/
|
||||
FLUSH_BATCH(fence);
|
||||
i915->vbo_flushed = 1;
|
||||
|
||||
I915_DBG(DBG_FLUSH, "%s: #####\n", __FUNCTION__);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void i915_init_flush_functions( struct i915_context *i915 )
|
||||
{
|
||||
i915->base.flush = i915_flush;
|
||||
|
@@ -31,6 +31,7 @@
|
||||
#include "util/u_string.h"
|
||||
|
||||
#include "i915_reg.h"
|
||||
#include "i915_debug.h"
|
||||
#include "i915_context.h"
|
||||
#include "i915_screen.h"
|
||||
#include "i915_surface.h"
|
||||
@@ -330,5 +331,7 @@ i915_screen_create(struct i915_winsys *iws)
|
||||
i915_init_screen_resource_functions(is);
|
||||
i915_init_screen_surface_functions(is);
|
||||
|
||||
i915_debug_init(is);
|
||||
|
||||
return &is->base;
|
||||
}
|
||||
|
@@ -32,6 +32,7 @@
|
||||
#include "draw/draw_vertex.h"
|
||||
#include "i915_context.h"
|
||||
#include "i915_state.h"
|
||||
#include "i915_debug.h"
|
||||
#include "i915_reg.h"
|
||||
|
||||
|
||||
@@ -205,6 +206,9 @@ void i915_update_derived(struct i915_context *i915)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (I915_DBG_ON(DBG_ATOMS))
|
||||
i915_dump_dirty(i915, __FUNCTION__);
|
||||
|
||||
for (i = 0; atoms[i]; i++)
|
||||
if (atoms[i]->dirty & i915->dirty)
|
||||
atoms[i]->update(i915);
|
||||
|
@@ -34,7 +34,6 @@
|
||||
#include "util/u_memory.h"
|
||||
#include "util/u_pack_color.h"
|
||||
|
||||
#define FILE_DEBUG_FLAG DEBUG_STATE
|
||||
|
||||
/* State that we have chosen to store in the DYNAMIC segment of the
|
||||
* i915 indirect state mechanism.
|
||||
|
@@ -29,6 +29,7 @@
|
||||
#include "i915_reg.h"
|
||||
#include "i915_context.h"
|
||||
#include "i915_batch.h"
|
||||
#include "i915_debug.h"
|
||||
#include "i915_reg.h"
|
||||
#include "i915_resource.h"
|
||||
|
||||
@@ -111,15 +112,20 @@ i915_emit_hardware_state(struct i915_context *i915 )
|
||||
3
|
||||
) * 3/2; /* plus 50% margin */
|
||||
|
||||
#if 0
|
||||
debug_printf("i915_emit_hardware_state: %d dwords, %d relocs\n", dwords, relocs);
|
||||
#endif
|
||||
uintptr_t save_ptr;
|
||||
size_t save_relocs;
|
||||
|
||||
if (I915_DBG_ON(DBG_ATOMS))
|
||||
i915_dump_hardware_dirty(i915, __FUNCTION__);
|
||||
|
||||
if(!BEGIN_BATCH(dwords, relocs)) {
|
||||
FLUSH_BATCH(NULL);
|
||||
assert(BEGIN_BATCH(dwords, relocs));
|
||||
}
|
||||
|
||||
save_ptr = (uintptr_t)i915->batch->ptr;
|
||||
save_relocs = i915->batch->relocs;
|
||||
|
||||
/* 14 dwords, 0 relocs */
|
||||
if (i915->hardware_dirty & I915_HW_INVARIENT)
|
||||
{
|
||||
@@ -399,6 +405,9 @@ i915_emit_hardware_state(struct i915_context *i915 )
|
||||
OUT_BATCH(0);
|
||||
}
|
||||
|
||||
I915_DBG(DBG_EMIT, "%s: used %d dwords, %d relocs\n", __FUNCTION__,
|
||||
((uintptr_t)i915->batch->ptr - save_ptr) / 4,
|
||||
i915->batch->relocs - save_relocs);
|
||||
|
||||
i915->hardware_dirty = 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user