Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1. /*
  2.  * Copyright 2008 Corbin Simpson <MostAwesomeDude@gmail.com>
  3.  * Copyright 2010 Marek Olšák <maraeo@gmail.com>
  4.  *
  5.  * Permission is hereby granted, free of charge, to any person obtaining a
  6.  * copy of this software and associated documentation files (the "Software"),
  7.  * to deal in the Software without restriction, including without limitation
  8.  * on the rights to use, copy, modify, merge, publish, distribute, sub
  9.  * license, and/or sell copies of the Software, and to permit persons to whom
  10.  * the Software is furnished to do so, subject to the following conditions:
  11.  *
  12.  * The above copyright notice and this permission notice (including the next
  13.  * paragraph) shall be included in all copies or substantial portions of the
  14.  * Software.
  15.  *
  16.  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  17.  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  18.  * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
  19.  * THE AUTHOR(S) AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
  20.  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
  21.  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
  22.  * USE OR OTHER DEALINGS IN THE SOFTWARE. */
  23.  
  24. #ifndef R300_SCREEN_H
  25. #define R300_SCREEN_H
  26.  
  27. #include "r300_chipset.h"
  28. #include "../../winsys/radeon/drm/radeon_winsys.h"
  29. #include "pipe/p_screen.h"
  30. #include "util/u_slab.h"
  31. #include "os/os_thread.h"
  32. #include <stdio.h>
  33.  
  34. struct r300_screen {
  35.     /* Parent class */
  36.     struct pipe_screen screen;
  37.  
  38.     struct radeon_winsys *rws;
  39.  
  40.     /* Chipset info and capabilities. */
  41.     struct radeon_info info;
  42.     struct r300_capabilities caps;
  43.  
  44.     /** Combination of DBG_xxx flags */
  45.     unsigned debug;
  46.  
  47.     /* The MSAA texture with CMASK access; */
  48.     struct pipe_resource *cmask_resource;
  49.     pipe_mutex cmask_mutex;
  50. };
  51.  
  52.  
  53. /* Convenience cast wrappers. */
  54. static INLINE struct r300_screen* r300_screen(struct pipe_screen* screen) {
  55.     return (struct r300_screen*)screen;
  56. }
  57.  
  58. static INLINE struct radeon_winsys *
  59. radeon_winsys(struct pipe_screen *screen) {
  60.     return r300_screen(screen)->rws;
  61. }
  62.  
  63. /* Debug functionality. */
  64.  
  65. /**
  66.  * Debug flags to disable/enable certain groups of debugging outputs.
  67.  *
  68.  * \note These may be rather coarse, and the grouping may be impractical.
  69.  * If you find, while debugging the driver, that a different grouping
  70.  * of these flags would be beneficial, just feel free to change them
  71.  * but make sure to update the documentation in r300_debug.c to reflect
  72.  * those changes.
  73.  */
  74. /*@{*/
  75.  
  76. /* Logging. */
  77. #define DBG_PSC         (1 << 0)
  78. #define DBG_FP          (1 << 1)
  79. #define DBG_VP          (1 << 2)
  80. #define DBG_SWTCL       (1 << 3)
  81. #define DBG_DRAW        (1 << 4)
  82. #define DBG_TEX         (1 << 5)
  83. #define DBG_TEXALLOC    (1 << 6)
  84. #define DBG_RS          (1 << 7)
  85. #define DBG_FB          (1 << 8)
  86. #define DBG_RS_BLOCK    (1 << 9)
  87. #define DBG_CBZB        (1 << 10)
  88. #define DBG_HYPERZ      (1 << 11)
  89. #define DBG_SCISSOR     (1 << 12)
  90. #define DBG_INFO        (1 << 13)
  91. #define DBG_MSAA        (1 << 14)
  92. /* Features. */
  93. #define DBG_ANISOHQ     (1 << 16)
  94. #define DBG_NO_TILING   (1 << 17)
  95. #define DBG_NO_IMMD     (1 << 18)
  96. #define DBG_NO_OPT      (1 << 19)
  97. #define DBG_NO_CBZB     (1 << 20)
  98. #define DBG_NO_ZMASK    (1 << 21)
  99. #define DBG_NO_HIZ      (1 << 22)
  100. #define DBG_NO_CMASK    (1 << 23)
  101. /* Statistics. */
  102. #define DBG_P_STAT      (1 << 25)
  103. /*@}*/
  104.  
  105. static INLINE boolean SCREEN_DBG_ON(struct r300_screen * screen, unsigned flags)
  106. {
  107.     return (screen->debug & flags) ? TRUE : FALSE;
  108. }
  109.  
  110. static INLINE void SCREEN_DBG(struct r300_screen * screen, unsigned flags,
  111.                               const char * fmt, ...)
  112. {
  113.     if (SCREEN_DBG_ON(screen, flags)) {
  114.         va_list va;
  115.         va_start(va, fmt);
  116.         vfprintf(stderr, fmt, va);
  117.         va_end(va);
  118.     }
  119. }
  120.  
  121. void r300_init_debug(struct r300_screen* ctx);
  122.  
  123. void r300_init_screen_resource_functions(struct r300_screen *r300screen);
  124.  
  125. #endif /* R300_SCREEN_H */
  126.