Subversion Repositories Kolibri OS

Rev

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

  1. /*
  2.  * XML DRI client-side driver configuration
  3.  * Copyright (C) 2003 Felix Kuehling
  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.  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
  9.  * and/or sell copies of the Software, and to permit persons to whom the
  10.  * Software is furnished to do so, subject to the following conditions:
  11.  *
  12.  * The above copyright notice and this permission notice shall be included
  13.  * in all copies or substantial portions of the Software.
  14.  *
  15.  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  16.  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  17.  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
  18.  * FELIX KUEHLING, OR ANY OTHER CONTRIBUTORS BE LIABLE FOR ANY CLAIM,
  19.  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
  20.  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
  21.  * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  22.  *
  23.  */
  24. /**
  25.  * \file t_options.h
  26.  * \brief Templates of common options
  27.  * \author Felix Kuehling
  28.  *
  29.  * This file defines macros for common options that can be used to
  30.  * construct driConfigOptions in the drivers. This file is only a
  31.  * template containing English descriptions for options wrapped in
  32.  * gettext(). xgettext can be used to extract translatable
  33.  * strings. These strings can then be translated by anyone familiar
  34.  * with GNU gettext. gen_xmlpool.py takes this template and fills in
  35.  * all the translations. The result (options.h) is included by
  36.  * xmlpool.h which in turn can be included by drivers.
  37.  *
  38.  * The macros used to describe otions in this file are defined in
  39.  * ../xmlpool.h.
  40.  */
  41.  
  42. /* This is needed for xgettext to extract translatable strings.
  43.  * gen_xmlpool.py will discard this line. */
  44. #include <libintl.h>
  45.  
  46. /*
  47.  * predefined option sections and options with multi-lingual descriptions
  48.  */
  49.  
  50.  
  51. /**
  52.  * \brief Debugging options
  53.  */
  54. #define DRI_CONF_SECTION_DEBUG \
  55. DRI_CONF_SECTION_BEGIN \
  56.         DRI_CONF_DESC(en,gettext("Debugging"))
  57.  
  58. #define DRI_CONF_NO_RAST(def) \
  59. DRI_CONF_OPT_BEGIN_B(no_rast, def) \
  60.         DRI_CONF_DESC(en,gettext("Disable 3D acceleration")) \
  61. DRI_CONF_OPT_END
  62.  
  63. #define DRI_CONF_PERFORMANCE_BOXES(def) \
  64. DRI_CONF_OPT_BEGIN_B(performance_boxes, def) \
  65.         DRI_CONF_DESC(en,gettext("Show performance boxes")) \
  66. DRI_CONF_OPT_END
  67.  
  68. #define DRI_CONF_ALWAYS_FLUSH_BATCH(def) \
  69. DRI_CONF_OPT_BEGIN_B(always_flush_batch, def) \
  70.         DRI_CONF_DESC(en,gettext("Enable flushing batchbuffer after each draw call")) \
  71. DRI_CONF_OPT_END
  72.  
  73. #define DRI_CONF_ALWAYS_FLUSH_CACHE(def) \
  74. DRI_CONF_OPT_BEGIN_B(always_flush_cache, def) \
  75.         DRI_CONF_DESC(en,gettext("Enable flushing GPU caches with each draw call")) \
  76. DRI_CONF_OPT_END
  77.  
  78. #define DRI_CONF_DISABLE_THROTTLING(def) \
  79. DRI_CONF_OPT_BEGIN_B(disable_throttling, def) \
  80.         DRI_CONF_DESC(en,gettext("Disable throttling on first batch after flush")) \
  81. DRI_CONF_OPT_END
  82.  
  83. #define DRI_CONF_FORCE_GLSL_EXTENSIONS_WARN(def) \
  84. DRI_CONF_OPT_BEGIN_B(force_glsl_extensions_warn, def) \
  85.         DRI_CONF_DESC(en,gettext("Force GLSL extension default behavior to 'warn'")) \
  86. DRI_CONF_OPT_END
  87.  
  88. #define DRI_CONF_DISABLE_BLEND_FUNC_EXTENDED(def) \
  89. DRI_CONF_OPT_BEGIN_B(disable_blend_func_extended, def) \
  90.         DRI_CONF_DESC(en,gettext("Disable dual source blending")) \
  91. DRI_CONF_OPT_END
  92.  
  93. #define DRI_CONF_DISABLE_GLSL_LINE_CONTINUATIONS(def) \
  94. DRI_CONF_OPT_BEGIN_B(disable_glsl_line_continuations, def) \
  95.         DRI_CONF_DESC(en,gettext("Disable backslash-based line continuations in GLSL source")) \
  96. DRI_CONF_OPT_END
  97.  
  98. #define DRI_CONF_DISABLE_SHADER_BIT_ENCODING(def) \
  99. DRI_CONF_OPT_BEGIN_B(disable_shader_bit_encoding, def) \
  100.         DRI_CONF_DESC(en,gettext("Disable GL_ARB_shader_bit_encoding")) \
  101. DRI_CONF_OPT_END
  102.  
  103. #define DRI_CONF_FORCE_GLSL_VERSION(def) \
  104. DRI_CONF_OPT_BEGIN_V(force_glsl_version, int, def, "0:999") \
  105.         DRI_CONF_DESC(en,gettext("Force a default GLSL version for shaders that lack an explicit #version line")) \
  106. DRI_CONF_OPT_END
  107.  
  108.  
  109.  
  110. /**
  111.  * \brief Image quality-related options
  112.  */
  113. #define DRI_CONF_SECTION_QUALITY \
  114. DRI_CONF_SECTION_BEGIN \
  115.         DRI_CONF_DESC(en,gettext("Image Quality"))
  116.  
  117. #define DRI_CONF_EXCESS_MIPMAP(def) \
  118. DRI_CONF_OPT_BEGIN_B(excess_mipmap, def) \
  119.         DRI_CONF_DESC(en,"Enable extra mipmap level") \
  120. DRI_CONF_OPT_END
  121.  
  122. #define DRI_CONF_TEXTURE_DEPTH_FB       0
  123. #define DRI_CONF_TEXTURE_DEPTH_32       1
  124. #define DRI_CONF_TEXTURE_DEPTH_16       2
  125. #define DRI_CONF_TEXTURE_DEPTH_FORCE_16 3
  126. #define DRI_CONF_TEXTURE_DEPTH(def) \
  127. DRI_CONF_OPT_BEGIN_V(texture_depth,enum,def,"0:3") \
  128.         DRI_CONF_DESC_BEGIN(en,gettext("Texture color depth")) \
  129.                 DRI_CONF_ENUM(0,gettext("Prefer frame buffer color depth")) \
  130.                 DRI_CONF_ENUM(1,gettext("Prefer 32 bits per texel")) \
  131.                 DRI_CONF_ENUM(2,gettext("Prefer 16 bits per texel")) \
  132.                 DRI_CONF_ENUM(3,gettext("Force 16 bits per texel")) \
  133.         DRI_CONF_DESC_END \
  134. DRI_CONF_OPT_END
  135.  
  136. #define DRI_CONF_DEF_MAX_ANISOTROPY(def,range) \
  137. DRI_CONF_OPT_BEGIN_V(def_max_anisotropy,float,def,range) \
  138.         DRI_CONF_DESC(en,gettext("Initial maximum value for anisotropic texture filtering")) \
  139. DRI_CONF_OPT_END
  140.  
  141. #define DRI_CONF_NO_NEG_LOD_BIAS(def) \
  142. DRI_CONF_OPT_BEGIN_B(no_neg_lod_bias, def) \
  143.         DRI_CONF_DESC(en,gettext("Forbid negative texture LOD bias")) \
  144. DRI_CONF_OPT_END
  145.  
  146. #define DRI_CONF_FORCE_S3TC_ENABLE(def) \
  147. DRI_CONF_OPT_BEGIN_B(force_s3tc_enable, def) \
  148.         DRI_CONF_DESC(en,gettext("Enable S3TC texture compression even if software support is not available")) \
  149. DRI_CONF_OPT_END
  150.  
  151. #define DRI_CONF_COLOR_REDUCTION_ROUND 0
  152. #define DRI_CONF_COLOR_REDUCTION_DITHER 1
  153. #define DRI_CONF_COLOR_REDUCTION(def) \
  154. DRI_CONF_OPT_BEGIN_V(color_reduction,enum,def,"0:1") \
  155.         DRI_CONF_DESC_BEGIN(en,gettext("Initial color reduction method")) \
  156.                 DRI_CONF_ENUM(0,gettext("Round colors")) \
  157.                 DRI_CONF_ENUM(1,gettext("Dither colors")) \
  158.         DRI_CONF_DESC_END \
  159. DRI_CONF_OPT_END
  160.  
  161. #define DRI_CONF_ROUND_TRUNC 0
  162. #define DRI_CONF_ROUND_ROUND 1
  163. #define DRI_CONF_ROUND_MODE(def) \
  164. DRI_CONF_OPT_BEGIN_V(round_mode,enum,def,"0:1") \
  165.         DRI_CONF_DESC_BEGIN(en,gettext("Color rounding method")) \
  166.                 DRI_CONF_ENUM(0,gettext("Round color components downward")) \
  167.                 DRI_CONF_ENUM(1,gettext("Round to nearest color")) \
  168.         DRI_CONF_DESC_END \
  169. DRI_CONF_OPT_END
  170.  
  171. #define DRI_CONF_DITHER_XERRORDIFF 0
  172. #define DRI_CONF_DITHER_XERRORDIFFRESET 1
  173. #define DRI_CONF_DITHER_ORDERED 2
  174. #define DRI_CONF_DITHER_MODE(def) \
  175. DRI_CONF_OPT_BEGIN_V(dither_mode,enum,def,"0:2") \
  176.         DRI_CONF_DESC_BEGIN(en,gettext("Color dithering method")) \
  177.                 DRI_CONF_ENUM(0,gettext("Horizontal error diffusion")) \
  178.                 DRI_CONF_ENUM(1,gettext("Horizontal error diffusion, reset error at line start")) \
  179.                 DRI_CONF_ENUM(2,gettext("Ordered 2D color dithering")) \
  180.         DRI_CONF_DESC_END \
  181. DRI_CONF_OPT_END
  182.  
  183. #define DRI_CONF_FLOAT_DEPTH(def) \
  184. DRI_CONF_OPT_BEGIN_B(float_depth, def) \
  185.         DRI_CONF_DESC(en,gettext("Floating point depth buffer")) \
  186. DRI_CONF_OPT_END
  187.  
  188. #define DRI_CONF_PP_CELSHADE(def) \
  189. DRI_CONF_OPT_BEGIN_V(pp_celshade,enum,def,"0:1") \
  190.         DRI_CONF_DESC(en,gettext("A post-processing filter to cel-shade the output")) \
  191. DRI_CONF_OPT_END
  192.  
  193. #define DRI_CONF_PP_NORED(def) \
  194. DRI_CONF_OPT_BEGIN_V(pp_nored,enum,def,"0:1") \
  195.         DRI_CONF_DESC(en,gettext("A post-processing filter to remove the red channel")) \
  196. DRI_CONF_OPT_END
  197.  
  198. #define DRI_CONF_PP_NOGREEN(def) \
  199. DRI_CONF_OPT_BEGIN_V(pp_nogreen,enum,def,"0:1") \
  200.         DRI_CONF_DESC(en,gettext("A post-processing filter to remove the green channel")) \
  201. DRI_CONF_OPT_END
  202.  
  203. #define DRI_CONF_PP_NOBLUE(def) \
  204. DRI_CONF_OPT_BEGIN_V(pp_noblue,enum,def,"0:1") \
  205.         DRI_CONF_DESC(en,gettext("A post-processing filter to remove the blue channel")) \
  206. DRI_CONF_OPT_END
  207.  
  208. #define DRI_CONF_PP_JIMENEZMLAA(def,min,max) \
  209. DRI_CONF_OPT_BEGIN_V(pp_jimenezmlaa,int,def, # min ":" # max ) \
  210.         DRI_CONF_DESC(en,gettext("Morphological anti-aliasing based on Jimenez\\\' MLAA. 0 to disable, 8 for default quality")) \
  211. DRI_CONF_OPT_END
  212.  
  213. #define DRI_CONF_PP_JIMENEZMLAA_COLOR(def,min,max) \
  214. DRI_CONF_OPT_BEGIN_V(pp_jimenezmlaa_color,int,def, # min ":" # max ) \
  215.         DRI_CONF_DESC(en,gettext("Morphological anti-aliasing based on Jimenez\\\' MLAA. 0 to disable, 8 for default quality. Color version, usable with 2d GL apps")) \
  216. DRI_CONF_OPT_END
  217.  
  218.  
  219.  
  220. /**
  221.  * \brief Performance-related options
  222.  */
  223. #define DRI_CONF_SECTION_PERFORMANCE \
  224. DRI_CONF_SECTION_BEGIN \
  225.         DRI_CONF_DESC(en,gettext("Performance"))
  226.  
  227. #define DRI_CONF_TCL_SW 0
  228. #define DRI_CONF_TCL_PIPELINED 1
  229. #define DRI_CONF_TCL_VTXFMT 2
  230. #define DRI_CONF_TCL_CODEGEN 3
  231. #define DRI_CONF_TCL_MODE(def) \
  232. DRI_CONF_OPT_BEGIN_V(tcl_mode,enum,def,"0:3") \
  233.         DRI_CONF_DESC_BEGIN(en,gettext("TCL mode (Transformation, Clipping, Lighting)")) \
  234.                 DRI_CONF_ENUM(0,gettext("Use software TCL pipeline")) \
  235.                 DRI_CONF_ENUM(1,gettext("Use hardware TCL as first TCL pipeline stage")) \
  236.                 DRI_CONF_ENUM(2,gettext("Bypass the TCL pipeline")) \
  237.                 DRI_CONF_ENUM(3,gettext("Bypass the TCL pipeline with state-based machine code generated on-the-fly")) \
  238.         DRI_CONF_DESC_END \
  239. DRI_CONF_OPT_END
  240.  
  241. #define DRI_CONF_FTHROTTLE_BUSY 0
  242. #define DRI_CONF_FTHROTTLE_USLEEPS 1
  243. #define DRI_CONF_FTHROTTLE_IRQS 2
  244. #define DRI_CONF_FTHROTTLE_MODE(def) \
  245. DRI_CONF_OPT_BEGIN_V(fthrottle_mode,enum,def,"0:2") \
  246.         DRI_CONF_DESC_BEGIN(en,gettext("Method to limit rendering latency")) \
  247.                 DRI_CONF_ENUM(0,gettext("Busy waiting for the graphics hardware")) \
  248.                 DRI_CONF_ENUM(1,gettext("Sleep for brief intervals while waiting for the graphics hardware")) \
  249.                 DRI_CONF_ENUM(2,gettext("Let the graphics hardware emit a software interrupt and sleep")) \
  250.         DRI_CONF_DESC_END \
  251. DRI_CONF_OPT_END
  252.  
  253. #define DRI_CONF_VBLANK_NEVER 0
  254. #define DRI_CONF_VBLANK_DEF_INTERVAL_0 1
  255. #define DRI_CONF_VBLANK_DEF_INTERVAL_1 2
  256. #define DRI_CONF_VBLANK_ALWAYS_SYNC 3
  257. #define DRI_CONF_VBLANK_MODE(def) \
  258. DRI_CONF_OPT_BEGIN_V(vblank_mode,enum,def,"0:3") \
  259.         DRI_CONF_DESC_BEGIN(en,gettext("Synchronization with vertical refresh (swap intervals)")) \
  260.                 DRI_CONF_ENUM(0,gettext("Never synchronize with vertical refresh, ignore application's choice")) \
  261.                 DRI_CONF_ENUM(1,gettext("Initial swap interval 0, obey application's choice")) \
  262.                 DRI_CONF_ENUM(2,gettext("Initial swap interval 1, obey application's choice")) \
  263.                 DRI_CONF_ENUM(3,gettext("Always synchronize with vertical refresh, application chooses the minimum swap interval")) \
  264.         DRI_CONF_DESC_END \
  265. DRI_CONF_OPT_END
  266.  
  267. #define DRI_CONF_HYPERZ_DISABLED 0
  268. #define DRI_CONF_HYPERZ_ENABLED 1
  269. #define DRI_CONF_HYPERZ(def) \
  270. DRI_CONF_OPT_BEGIN_B(hyperz, def) \
  271.         DRI_CONF_DESC(en,gettext("Use HyperZ to boost performance")) \
  272. DRI_CONF_OPT_END
  273.  
  274. #define DRI_CONF_MAX_TEXTURE_UNITS(def,min,max) \
  275. DRI_CONF_OPT_BEGIN_V(texture_units,int,def, # min ":" # max ) \
  276.         DRI_CONF_DESC(en,gettext("Number of texture units used")) \
  277. DRI_CONF_OPT_END
  278.  
  279. #define DRI_CONF_TEXTURE_BLEND_QUALITY(def,range) \
  280. DRI_CONF_OPT_BEGIN_V(texture_blend_quality,float,def,range) \
  281.         DRI_CONF_DESC(en,gettext("Texture filtering quality vs. speed, AKA “brilinear” texture filtering")) \
  282. DRI_CONF_OPT_END
  283.  
  284. #define DRI_CONF_TEXTURE_HEAPS_ALL 0
  285. #define DRI_CONF_TEXTURE_HEAPS_CARD 1
  286. #define DRI_CONF_TEXTURE_HEAPS_GART 2
  287. #define DRI_CONF_TEXTURE_HEAPS(def) \
  288. DRI_CONF_OPT_BEGIN_V(texture_heaps,enum,def,"0:2") \
  289.         DRI_CONF_DESC_BEGIN(en,gettext("Used types of texture memory")) \
  290.                 DRI_CONF_ENUM(0,gettext("All available memory")) \
  291.                 DRI_CONF_ENUM(1,gettext("Only card memory (if available)")) \
  292.                 DRI_CONF_ENUM(2,gettext("Only GART (AGP/PCIE) memory (if available)")) \
  293.         DRI_CONF_DESC_END \
  294. DRI_CONF_OPT_END
  295.  
  296.  
  297.  
  298. /**
  299.  * \brief Software-fallback options.  To allow using features (like
  300.  * GL_ARB_vertex_program) on GPUs that don't otherwise support the feature.
  301.  */
  302. #define DRI_CONF_SECTION_SOFTWARE \
  303. DRI_CONF_SECTION_BEGIN \
  304.         DRI_CONF_DESC(en,gettext("Features that are not hardware-accelerated"))
  305.  
  306. #define DRI_CONF_ARB_VERTEX_PROGRAM(def) \
  307. DRI_CONF_OPT_BEGIN_B(arb_vertex_program, def) \
  308.         DRI_CONF_DESC(en,gettext("Enable extension GL_ARB_vertex_program")) \
  309. DRI_CONF_OPT_END
  310.  
  311.  
  312.  
  313. /**
  314.  * \brief Miscellaneous configuration options
  315.  */
  316. #define DRI_CONF_SECTION_MISCELLANEOUS \
  317. DRI_CONF_SECTION_BEGIN \
  318.         DRI_CONF_DESC(en,gettext("Miscellaneous"))
  319.  
  320. #define DRI_CONF_ALWAYS_HAVE_DEPTH_BUFFER(def) \
  321. DRI_CONF_OPT_BEGIN_B(always_have_depth_buffer, def) \
  322.         DRI_CONF_DESC(en,gettext("Create all visuals with a depth buffer")) \
  323. DRI_CONF_OPT_END
  324.