• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (C) 2014-2016 Intel Corporation.   All Rights Reserved.
2#
3# Permission is hereby granted, free of charge, to any person obtaining a
4# copy of this software and associated documentation files (the "Software"),
5# to deal in the Software without restriction, including without limitation
6# the rights to use, copy, modify, merge, publish, distribute, sublicense,
7# and/or sell copies of the Software, and to permit persons to whom the
8# Software is furnished to do so, subject to the following conditions:
9#
10# The above copyright notice and this permission notice (including the next
11# paragraph) shall be included in all copies or substantial portions of the
12# Software.
13#
14# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
17# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
19# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
20# IN THE SOFTWARE.
21import sys
22
23# Python source
24KNOBS = [
25
26    ['ENABLE_ASSERT_DIALOGS', {
27        'type'      : 'bool',
28        'default'   : 'true',
29        'desc'      : ['Use dialogs when asserts fire.',
30                       'Asserts are only enabled in debug builds'],
31        'category'  : 'debug',
32    }],
33
34    ['SINGLE_THREADED', {
35        'type'      : 'bool',
36        'default'   : 'false',
37        'desc'      : ['If enabled will perform all rendering on the API thread.',
38                       'This is useful mainly for debugging purposes.'],
39        'category'  : 'debug',
40    }],
41
42    ['DUMP_SHADER_IR', {
43        'type'      : 'bool',
44        'default'   : 'false',
45        'desc'      : ['Dumps shader LLVM IR at various stages of jit compilation.'],
46        'category'  : 'debug',
47    }],
48
49    ['USE_GENERIC_STORETILE', {
50        'type'      : 'bool',
51        'default'   : 'false',
52        'desc'      : ['Always use generic function for performing StoreTile.',
53                       'Will be slightly slower than using optimized (jitted) path'],
54        'category'  : 'debug',
55    }],
56
57    ['FAST_CLEAR', {
58        'type'      : 'bool',
59        'default'   : 'true',
60        'desc'      : ['Replace 3D primitive execute with a SWRClearRT operation and',
61                       'defer clear execution to first backend op on hottile, or hottile store'],
62        'category'  : 'perf',
63    }],
64
65    ['BASE_NUMA_NODE', {
66        'type'      : 'uint32_t',
67        'default'   : '0',
68        'desc'      : ['Starting NUMA node index to use when allocating compute resources.',
69                       'Setting this to a non-zero value will reduce the maximum # of NUMA nodes used.'],
70        'category'  : 'perf',
71        'advanced'  : True,
72    }],
73
74    ['MAX_NUMA_NODES', {
75        'type'      : 'uint32_t',
76        'default'   : '1' if sys.platform == 'win32' else '0',
77        'desc'      : ['Maximum # of NUMA-nodes per system used for worker threads',
78                       '  0 == ALL NUMA-nodes in the system',
79                       '  N == Use at most N NUMA-nodes for rendering'],
80        'category'  : 'perf',
81    }],
82
83    ['BASE_CORE', {
84        'type'      : 'uint32_t',
85        'default'   : '0',
86        'desc'      : ['Starting core index to use when allocating compute resources.',
87                       'Setting this to a non-zero value will reduce the maximum # of cores used.'],
88        'category'  : 'perf',
89        'advanced'  : True,
90    }],
91
92    ['MAX_CORES_PER_NUMA_NODE', {
93        'type'      : 'uint32_t',
94        'default'   : '0',
95        'desc'      : ['Maximum # of cores per NUMA-node used for worker threads.',
96                       '  0 == ALL non-API thread cores per NUMA-node',
97                       '  N == Use at most N cores per NUMA-node'],
98        'category'  : 'perf',
99    }],
100
101    ['BASE_THREAD', {
102        'type'      : 'uint32_t',
103        'default'   : '0',
104        'desc'      : ['Starting thread index to use when allocating compute resources.',
105                       'Setting this to a non-zero value will reduce the maximum # of threads used.'],
106        'category'  : 'perf',
107        'advanced'  : True,
108    }],
109
110    ['MAX_THREADS_PER_CORE', {
111        'type'      : 'uint32_t',
112        'default'   : '1',
113        'desc'      : ['Maximum # of (hyper)threads per physical core used for worker threads.',
114                       '  0 == ALL hyper-threads per core',
115                       '  N == Use at most N hyper-threads per physical core'],
116        'category'  : 'perf',
117    }],
118
119    ['MAX_WORKER_THREADS', {
120        'type'      : 'uint32_t',
121        'default'   : '0',
122        'desc'      : ['Maximum worker threads to spawn.',
123                       '',
124                       'IMPORTANT: If this is non-zero, no worker threads will be bound to',
125                       'specific HW threads.  They will all be "floating" SW threads.',
126                       'In this case, the above 3 KNOBS will be ignored.'],
127        'category'  : 'perf',
128    }],
129
130    ['BUCKETS_START_FRAME', {
131        'type'      : 'uint32_t',
132        'default'   : '1200',
133        'desc'      : ['Frame from when to start saving buckets data.',
134                       '',
135                       'NOTE: KNOB_ENABLE_RDTSC must be enabled in core/knobs.h',
136                       'for this to have an effect.'],
137        'category'  : 'perf',
138    }],
139
140    ['BUCKETS_END_FRAME', {
141        'type'      : 'uint32_t',
142        'default'   : '1400',
143        'desc'      : ['Frame at which to stop saving buckets data.',
144                       '',
145                       'NOTE: KNOB_ENABLE_RDTSC must be enabled in core/knobs.h',
146                       'for this to have an effect.'],
147        'category'  : 'perf',
148    }],
149
150    ['WORKER_SPIN_LOOP_COUNT', {
151        'type'      : 'uint32_t',
152        'default'   : '5000',
153        'desc'      : ['Number of spin-loop iterations worker threads will perform',
154                       'before going to sleep when waiting for work'],
155        'category'  : 'perf',
156    }],
157
158    ['MAX_DRAWS_IN_FLIGHT', {
159        'type'      : 'uint32_t',
160        'default'   : '256',
161        'desc'      : ['Maximum number of draws outstanding before API thread blocks.',
162                       'This value MUST be evenly divisible into 2^32'],
163        'category'  : 'perf',
164    }],
165
166    ['MAX_PRIMS_PER_DRAW', {
167        'type'      : 'uint32_t',
168        'default'   : '49152',
169        'desc'      : ['Maximum primitives in a single Draw().',
170                       'Larger primitives are split into smaller Draw calls.',
171                       'Should be a multiple of (3 * vectorWidth).'],
172        'category'  : 'perf',
173    }],
174
175    ['MAX_TESS_PRIMS_PER_DRAW', {
176        'type'      : 'uint32_t',
177        'default'   : '16',
178        'desc'      : ['Maximum primitives in a single Draw() with tessellation enabled.',
179                       'Larger primitives are split into smaller Draw calls.',
180                       'Should be a multiple of (vectorWidth).'],
181        'category'  : 'perf',
182    }],
183
184
185    ['DEBUG_OUTPUT_DIR', {
186        'type'      : 'std::string',
187        'default'   : r'%TEMP%\Rast\DebugOutput' if sys.platform == 'win32' else '/tmp/Rast/DebugOutput',
188        'desc'      : ['Output directory for debug data.'],
189        'category'  : 'debug',
190    }],
191
192    ['JIT_ENABLE_CACHE', {
193        'type'      : 'bool',
194        'default'   : 'false',
195        'desc'      : ['Enables caching of compiled shaders'],
196        'category'  : 'debug',
197    }],
198
199    ['JIT_CACHE_DIR', {
200        'type'      : 'std::string',
201        'default'   : r'%TEMP%\SWR\JitCache' if sys.platform == 'win32' else '${HOME}/.swr/jitcache',
202        'desc'      : ['Cache directory for compiled shaders.'],
203        'category'  : 'debug',
204    }],
205
206    ['TOSS_DRAW', {
207        'type'      : 'bool',
208        'default'   : 'false',
209        'desc'      : ['Disable per-draw/dispatch execution'],
210        'category'  : 'perf',
211    }],
212
213    ['TOSS_QUEUE_FE', {
214        'type'      : 'bool',
215        'default'   : 'false',
216        'desc'      : ['Stop per-draw execution at worker FE',
217                       '',
218                       'NOTE: Requires KNOB_ENABLE_TOSS_POINTS to be enabled in core/knobs.h'],
219        'category'  : 'perf',
220        'advanced'  : 'true',
221    }],
222
223    ['TOSS_FETCH', {
224        'type'      : 'bool',
225        'default'   : 'false',
226        'desc'      : ['Stop per-draw execution at vertex fetch',
227                       '',
228                       'NOTE: Requires KNOB_ENABLE_TOSS_POINTS to be enabled in core/knobs.h'],
229        'category'  : 'perf',
230        'advanced'  : 'true',
231    }],
232
233    ['TOSS_IA', {
234        'type'      : 'bool',
235        'default'   : 'false',
236        'desc'      : ['Stop per-draw execution at input assembler',
237                       '',
238                       'NOTE: Requires KNOB_ENABLE_TOSS_POINTS to be enabled in core/knobs.h'],
239        'category'  : 'perf',
240        'advanced'  : 'true',
241    }],
242
243    ['TOSS_VS', {
244        'type'      : 'bool',
245        'default'   : 'false',
246        'desc'      : ['Stop per-draw execution at vertex shader',
247                       '',
248                       'NOTE: Requires KNOB_ENABLE_TOSS_POINTS to be enabled in core/knobs.h'],
249        'category'  : 'perf',
250        'advanced'  : 'true',
251    }],
252
253    ['TOSS_SETUP_TRIS', {
254        'type'      : 'bool',
255        'default'   : 'false',
256        'desc'      : ['Stop per-draw execution at primitive setup',
257                       '',
258                       'NOTE: Requires KNOB_ENABLE_TOSS_POINTS to be enabled in core/knobs.h'],
259        'category'  : 'perf',
260        'advanced'  : 'true',
261    }],
262
263    ['TOSS_BIN_TRIS', {
264        'type'      : 'bool',
265        'default'   : 'false',
266        'desc'      : ['Stop per-draw execution at primitive binning',
267                       '',
268                       'NOTE: Requires KNOB_ENABLE_TOSS_POINTS to be enabled in core/knobs.h'],
269        'category'  : 'perf',
270        'advanced'  : 'true',
271    }],
272
273    ['TOSS_RS', {
274        'type'      : 'bool',
275        'default'   : 'false',
276        'desc'      : ['Stop per-draw execution at rasterizer',
277                       '',
278                       'NOTE: Requires KNOB_ENABLE_TOSS_POINTS to be enabled in core/knobs.h'],
279        'category'  : 'perf',
280        'advanced'  : 'true',
281    }],
282
283    ]
284