X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fgallium%2Fdrivers%2Fr300%2Fr300_screen.h;h=82b2068e7a08ea5b62d8498a4a22d5167dda5528;hb=a04f8c361211dda6a27c5577070492e17a2f4743;hp=502fbfa5a24a1ce4ed6ba74cbb2954cfac5007b6;hpb=a8238bb08a95e7ea4430450c304a6bee210df1a6;p=mesa.git diff --git a/src/gallium/drivers/r300/r300_screen.h b/src/gallium/drivers/r300/r300_screen.h index 502fbfa5a24..82b2068e7a0 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"), @@ -23,43 +24,43 @@ #ifndef R300_SCREEN_H #define R300_SCREEN_H -#include "pipe/p_screen.h" - #include "r300_chipset.h" - -struct radeon_winsys; +#include "../../winsys/radeon/drm/radeon_winsys.h" +#include "pipe/p_screen.h" +#include "util/u_slab.h" +#include struct r300_screen { /* Parent class */ struct pipe_screen screen; - struct radeon_winsys* radeon_winsys; + struct radeon_winsys *rws; - /* Chipset capabilities */ - struct r300_capabilities* caps; + /* Chipset info and capabilities. */ + struct radeon_info info; + struct r300_capabilities caps; + + /* Memory pools. */ + struct util_slab_mempool pool_buffers; /** Combination of DBG_xxx flags */ unsigned debug; -}; -struct r300_transfer { - /* Parent class */ - struct pipe_transfer transfer; - - /* Offset from start of buffer. */ - unsigned offset; + /* The number of created contexts to know whether we have multiple + * contexts or not. */ + int num_contexts; + pipe_mutex num_contexts_mutex; }; -/* Convenience cast wrapper. */ + +/* Convenience cast wrappers. */ 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) -{ - return (struct r300_transfer*)transfer; +static INLINE struct radeon_winsys * +radeon_winsys(struct pipe_screen *screen) { + return r300_screen(screen)->rws; } /* Debug functionality. */ @@ -74,13 +75,32 @@ r300_transfer(struct pipe_transfer* transfer) * 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 + +/* Logging. */ +#define DBG_PSC (1 << 0) +#define DBG_FP (1 << 1) +#define DBG_VP (1 << 2) +#define DBG_SWTCL (1 << 3) +#define DBG_DRAW (1 << 4) +#define DBG_TEX (1 << 5) +#define DBG_TEXALLOC (1 << 6) +#define DBG_RS (1 << 7) +#define DBG_FB (1 << 8) +#define DBG_RS_BLOCK (1 << 9) +#define DBG_CBZB (1 << 10) +#define DBG_HYPERZ (1 << 11) +#define DBG_SCISSOR (1 << 12) +#define DBG_INFO (1 << 13) +/* Features. */ +#define DBG_ANISOHQ (1 << 16) +#define DBG_NO_TILING (1 << 17) +#define DBG_NO_IMMD (1 << 18) +#define DBG_NO_OPT (1 << 19) +#define DBG_NO_CBZB (1 << 20) +#define DBG_NO_ZMASK (1 << 21) +#define DBG_NO_HIZ (1 << 22) +/* Statistics. */ +#define DBG_P_STAT (1 << 25) /*@}*/ static INLINE boolean SCREEN_DBG_ON(struct r300_screen * screen, unsigned flags) @@ -94,12 +114,13 @@ static INLINE void SCREEN_DBG(struct r300_screen * screen, unsigned flags, if (SCREEN_DBG_ON(screen, flags)) { va_list va; va_start(va, fmt); - debug_vprintf(fmt, va); + vfprintf(stderr, fmt, va); va_end(va); } } void r300_init_debug(struct r300_screen* ctx); -#endif /* R300_SCREEN_H */ +void r300_init_screen_resource_functions(struct r300_screen *r300screen); +#endif /* R300_SCREEN_H */