Procházet zdrojové kódy

ir_reader: Make assignment conditions optional.

You can now simply write (assign (xy) <lhs> <rhs>) instead of the
verbose (assign (constant bool (1)) (xy) <lhs> <rhs>).
tags/android-x86-2.2-r2
Kenneth Graunke před 15 roky
rodič
revize
bbafd2b849
2 změnil soubory, kde provedl 13 přidání a 11 odebrání
  1. 0
    3
      src/glsl/ir_print_visitor.cpp
  2. 13
    8
      src/glsl/ir_reader.cpp

+ 0
- 3
src/glsl/ir_print_visitor.cpp Zobrazit soubor

@@ -281,9 +281,6 @@ void ir_print_visitor::visit(ir_assignment *ir)

if (ir->condition)
ir->condition->accept(this);
else
printf("(constant bool (1))");


char mask[5];
unsigned j = 0;

+ 13
- 8
src/glsl/ir_reader.cpp Zobrazit soubor

@@ -538,20 +538,25 @@ ir_reader::read_rvalue(s_expression *expr)
ir_assignment *
ir_reader::read_assignment(s_expression *expr)
{
s_expression *cond_expr, *lhs_expr, *rhs_expr;
s_expression *cond_expr = NULL;
s_expression *lhs_expr, *rhs_expr;
s_list *mask_list;

s_pattern pat[] = { "assign", cond_expr, mask_list, lhs_expr, rhs_expr };
if (!MATCH(expr, pat)) {
ir_read_error(expr, "expected (assign <condition> (<write mask>) "
s_pattern pat4[] = { "assign", mask_list, lhs_expr, rhs_expr };
s_pattern pat5[] = { "assign", cond_expr, mask_list, lhs_expr, rhs_expr };
if (!MATCH(expr, pat4) && !MATCH(expr, pat5)) {
ir_read_error(expr, "expected (assign [<condition>] (<write mask>) "
"<lhs> <rhs>)");
return NULL;
}

ir_rvalue *condition = read_rvalue(cond_expr);
if (condition == NULL) {
ir_read_error(NULL, "when reading condition of assignment");
return NULL;
ir_rvalue *condition = NULL;
if (cond_expr != NULL) {
condition = read_rvalue(cond_expr);
if (condition == NULL) {
ir_read_error(NULL, "when reading condition of assignment");
return NULL;
}
}

unsigned mask = 0;

Načítá se…
Zrušit
Uložit