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