X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fgallium%2Fdrivers%2Fr300%2Fr300_screen.h;h=330bd9b36ba77a2453f596b1fa1138bd3c9b4733;hb=52e591383bdce49cb46a1162aff9632c57e06504;hp=41df31f670fdeff294c2a80c6d61c7c896a05c67;hpb=1f196b786d6bd0c6a5dbdc638574ff716cc3d4de;p=mesa.git diff --git a/src/gallium/drivers/r300/r300_screen.h b/src/gallium/drivers/r300/r300_screen.h index 41df31f670f..330bd9b36ba 100644 --- a/src/gallium/drivers/r300/r300_screen.h +++ b/src/gallium/drivers/r300/r300_screen.h @@ -1,5 +1,6 @@ /* * Copyright 2008 Corbin Simpson + * Copyright 2010 Marek Olšák * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -27,35 +28,69 @@ #include "r300_chipset.h" +#include + struct r300_screen { /* Parent class */ struct pipe_screen screen; - /* Chipset capabilities */ - struct r300_capabilities* caps; -}; + struct r300_winsys_screen *rws; -struct r300_transfer { - /* Parent class */ - struct pipe_transfer transfer; + /* Chipset capabilities */ + struct r300_capabilities caps; - /* Offset from start of buffer. */ - unsigned offset; + /** Combination of DBG_xxx flags */ + unsigned debug; }; + /* Convenience cast wrapper. */ static INLINE struct r300_screen* r300_screen(struct pipe_screen* screen) { return (struct r300_screen*)screen; } -/* Convenience cast wrapper. */ -static INLINE struct r300_transfer* -r300_transfer(struct pipe_transfer* transfer) +/* Debug functionality. */ + +/** + * Debug flags to disable/enable certain groups of debugging outputs. + * + * \note These may be rather coarse, and the grouping may be impractical. + * If you find, while debugging the driver, that a different grouping + * of these flags would be beneficial, just feel free to change them + * but make sure to update the documentation in r300_debug.c to reflect + * those changes. + */ +/*@{*/ +#define DBG_HELP 0x0000001 +#define DBG_FP 0x0000002 +#define DBG_VP 0x0000004 +#define DBG_CS 0x0000008 +#define DBG_DRAW 0x0000010 +#define DBG_TEX 0x0000020 +#define DBG_FALL 0x0000040 +#define DBG_ANISOHQ 0x0000080 +#define DBG_NO_TILING 0x0000100 +#define DBG_NO_IMMD 0x0000200 +/*@}*/ + +static INLINE boolean SCREEN_DBG_ON(struct r300_screen * screen, unsigned flags) { - return (struct r300_transfer*)transfer; + return (screen->debug & flags) ? TRUE : FALSE; } -/* Creates a new r300 screen. */ -struct pipe_screen* r300_create_screen(struct r300_winsys* r300_winsys); +static INLINE void SCREEN_DBG(struct r300_screen * screen, unsigned flags, + const char * fmt, ...) +{ + if (SCREEN_DBG_ON(screen, flags)) { + va_list va; + va_start(va, fmt); + vfprintf(stderr, fmt, va); + va_end(va); + } +} + +void r300_init_debug(struct r300_screen* ctx); + +void r300_init_screen_resource_functions(struct r300_screen *r300screen); #endif /* R300_SCREEN_H */