浏览代码

glsl: Make ir_validate check the type of ir_discard::condition.

Copy and pasted from the ir_if::condition handling, plus a NULL check.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Connor Abbott <cwabbott0@gmail.com>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
tags/10.6-branchpoint
Kenneth Graunke 10 年前
父节点
当前提交
926d8b0510
共有 1 个文件被更改,包括 15 次插入0 次删除
  1. 15
    0
      src/glsl/ir_validate.cpp

+ 15
- 0
src/glsl/ir_validate.cpp 查看文件

@@ -61,6 +61,7 @@ public:
virtual ir_visitor_status visit(ir_variable *v);
virtual ir_visitor_status visit(ir_dereference_variable *ir);

virtual ir_visitor_status visit_enter(ir_discard *ir);
virtual ir_visitor_status visit_enter(ir_if *ir);

virtual ir_visitor_status visit_enter(ir_function *ir);
@@ -132,6 +133,20 @@ ir_validate::visit_enter(class ir_dereference_array *ir)
return visit_continue;
}

ir_visitor_status
ir_validate::visit_enter(ir_discard *ir)
{
if (ir->condition && ir->condition->type != glsl_type::bool_type) {
printf("ir_discard condition %s type instead of bool.\n",
ir->condition->type->name);
ir->print();
printf("\n");
abort();
}

return visit_continue;
}

ir_visitor_status
ir_validate::visit_enter(ir_if *ir)
{

正在加载...
取消
保存