"Disable shader validation at each successful lowering/optimization call" },
{ "validate_ssa_dominance", NIR_DEBUG_VALIDATE_SSA_DOMINANCE,
"Validate SSA dominance in shader at each successful lowering/optimization call" },
+ { "validate_gc_list", NIR_DEBUG_VALIDATE_GC_LIST,
+ "Validate the instruction GC list at each successful lowering/optimization call" },
{ "tgsi", NIR_DEBUG_TGSI,
"Dump NIR/TGSI shaders when doing a NIR<->TGSI translation" },
{ "print", NIR_DEBUG_PRINT,
#define NIR_DEBUG_PRINT_CBS (1u << 18)
#define NIR_DEBUG_PRINT_KS (1u << 19)
#define NIR_DEBUG_PRINT_CONSTS (1u << 20)
+#define NIR_DEBUG_VALIDATE_GC_LIST (1u << 21)
#define NIR_DEBUG_PRINT (NIR_DEBUG_PRINT_VS | \
NIR_DEBUG_PRINT_TCS | \
state->instr = instr;
- validate_assert(state, _mesa_set_search(state->shader_gc_list, instr));
+ if (state->shader_gc_list)
+ validate_assert(state, _mesa_set_search(state->shader_gc_list, instr));
switch (instr->type) {
case nir_instr_type_alu:
state->blocks = _mesa_pointer_set_create(state->mem_ctx);
state->var_defs = _mesa_pointer_hash_table_create(state->mem_ctx);
state->errors = _mesa_pointer_hash_table_create(state->mem_ctx);
- state->shader_gc_list = _mesa_pointer_set_create(state->mem_ctx);
+ state->shader_gc_list = NIR_DEBUG(VALIDATE_GC_LIST) ?
+ _mesa_pointer_set_create(state->mem_ctx) : NULL;
state->loop = NULL;
state->instr = NULL;
validate_state state;
init_validate_state(&state);
- list_for_each_entry(nir_instr, instr, &shader->gc_list, gc_node) {
- _mesa_set_add(state.shader_gc_list, instr);
+ if (state.shader_gc_list) {
+ list_for_each_entry(nir_instr, instr, &shader->gc_list, gc_node)
+ _mesa_set_add(state.shader_gc_list, instr);
}
state.shader = shader;