void MetricBackend_INTEL_perfquery::endQuery(QueryBoundary boundary) {
    if (!queryInProgress) return;
    if (!supported || !numPasses) return;
    if (boundary == QUERY_BOUNDARY_CALL) return;
    if ((boundary == QUERY_BOUNDARY_FRAME) && !perFrame) return;
    if ((boundary == QUERY_BOUNDARY_DRAWCALL) && perFrame) return;
    glEndPerfQueryINTEL(curQuery);
    freeQuery(curEvent++);
    queryInProgress = false;
}
Ejemplo n.º 2
0
void common_query_free(ADIOS_QUERY* q)
{
  if (q == NULL) {
    return;
  }

  if (q->deleteSelectionWhenFreed) {
    common_read_selection_delete(q->sel);
  }

  // Only call a specialized free method if this query has been evaluated using
  // a particular query engine! Otherwise, if a query is created but never
  // evaluated, this will cause segfaults since no query method initialized the query
  if (q->method != ADIOS_QUERY_METHOD_UNKNOWN) {
      assert(q->method < ADIOS_QUERY_METHOD_COUNT);
      if (query_hooks[q->method].adios_query_free_fn != NULL) {
	query_hooks[q->method].adios_query_free_fn(q);
      }
  }

  freeQuery(q);
}
Ejemplo n.º 3
0
Archivo: main.c Proyecto: Phildo/pixQL
int main(int argc, char **argv)
{
  PixErr err = {0};

  char *infile_str = 0;
  char *outfile_str = 0;
  char *queryfile_str = 0;
  char *query_str = 0;
  if(!parseArgs(argc, argv, &infile_str, &outfile_str, &queryfile_str, &query_str, &err))
  { fprintf(stderr,"%s\n",err.info); return 1; }

  Query query = {0};
  if(!parseQuery(query_str, &query, &err))
  { fprintf(stderr,"%s\n",err.info); return 1; }

  PixImg in_img = {0};
  if(infile_str)
  {
    if(!readFile(infile_str, &in_img, &err))
    { fprintf(stderr,"%s\n",err.info); return 1; }
  }

  PixImg out_img = {0};
  if(!executeQuery(&query, &in_img, &out_img, &err))
  { fprintf(stderr,"%s\n",err.info); return 1; }

  if(!writeFile(outfile_str, &out_img, &err))
  { fprintf(stderr,"%s\n",err.info); return 1; }

  //to please valgrind
  freeQuery(&query);
  free(in_img.data);
  free(out_img.data);

  return 0;
}
Ejemplo n.º 4
0
int main(int argc, char **argv)
{
    PixErr err;
    Query query = {0};
    QueryInit *init = 0;
    QueryProcedure *pro = 0;
    QuerySelection *sel = 0;
    QueryOperation *op = 0;
    QueryExpression *exp = 0;
    QueryExpression *expa = 0;
    QueryExpression *expb = 0;
    QueryValue *val = 0;
    QueryMember *mem = 0;
    QueryConstant *con = 0;

    char *q_str = 0;
    int i = 0;


    //TEST 0
    q_str = "COPY; SELECT WHERE COL < 100; OPERATE SET A = 0;"; //simple
    printf("Test %d: %s\n",i,q_str);
    if(!parseQuery(q_str, &query, &err))
        ERR("%s",err.info);

    init = &query.init;
    if(init->type != QUERY_INIT_TYPE_COPY) ERR("Init type incorrect");
    if(query.n_procedures != 1) ERR("Wrong number procedures");
    pro = query.procedures;
    if(pro->n_selections != 1) ERR("Wrong num selections");
    sel = pro->selections;
    if(sel->selecting != QUERY_TARGET_IN) ERR("Wrong selection target");
    exp = &sel->exp;
    if(exp->type != QUERY_EXPRESSION_TYPE_LT) ERR("Wrong selection expression type");
    expa = exp->a;
    if(expa->type != QUERY_EXPRESSION_TYPE_VALUE) ERR("Wrong selection expression type for COL");
    val = &expa->v;
    if(val->type != QUERY_VALUE_TYPE_CONSTANT) ERR("Wrong value type for COL");
    con = &val->constant;
    if(con->type != QUERY_CONSTANT_TYPE_COL) ERR("Wrong constant type for COL");
    expb = exp->b;
    if(expb->type != QUERY_EXPRESSION_TYPE_VALUE) ERR("Wrong selection expression type for 100");
    val = &expb->v;
    if(val->type != QUERY_VALUE_TYPE_CONSTANT) ERR("Wrong value type for 100");
    con = &val->constant;
    if(con->type != QUERY_CONSTANT_TYPE_NUMBER) ERR("Wrong constant type for 100");
    if(con->value != 100) ERR("Wrong constant value for 100");
    if(pro->n_operations != 1) ERR("Wrong num operations");
    op = pro->operations;
    if(op->operating != QUERY_TARGET_IN) ERR("Wrong operating target");
    mem = &op->lval;
    if(mem->type != QUERY_MEMBER_TYPE_A) ERR("Wrong operation member type");
    if(mem->target != QUERY_TARGET_FALLBACK) ERR("Wrong operation member target");
    if(mem->row != NULL) ERR("Wrong operation member row");
    if(mem->col != NULL) ERR("Wrong operation member col");
    exp = &op->rval;
    if(exp->type != QUERY_EXPRESSION_TYPE_VALUE) ERR("Wrong operation expression type for 0");
    val = &exp->v;
    if(val->type != QUERY_VALUE_TYPE_CONSTANT) ERR("Wrong value type for 0");
    con = &val->constant;
    if(con->type != QUERY_CONSTANT_TYPE_NUMBER) ERR("Wrong constant type for 0");
    if(con->value != 0) ERR("Wrong constant value for 0");

    freeQuery(&query);
    printf("Passed\n");
    i++;


    //TEST 1
    q_str = "OPERATE SET R=0;"; //minimal
    printf("Test %d: %s\n",i,q_str);
    if(!parseQuery(q_str, &query, &err))
        ERR("%s",err.info);

    freeQuery(&query);
    printf("Passed\n");
    i++;


    //TEST 2
    q_str = "OPERATE SET R=R-100;"; //spacing
    printf("Test %d: %s\n",i,q_str);
    if(!parseQuery(q_str, &query, &err))
        ERR("%s",err.info);

    freeQuery(&query);
    printf("Passed\n");
    i++;


    //TEST 3
    q_str = "OPERATE SET R = R+10/2;"; //compound
    printf("Test %d: %s\n",i,q_str);
    if(!parseQuery(q_str, &query, &err))
        ERR("%s",err.info);

    freeQuery(&query);
    printf("Passed\n");
    i++;


    //TEST 4
    q_str = "OPERATE SET R = (R+10)/2;"; //parens + order of operations
    printf("Test %d: %s\n",i,q_str);
    if(!parseQuery(q_str, &query, &err))
        ERR("%s",err.info);

    freeQuery(&query);
    printf("Passed\n");
    i++;


    //TEST 5
    q_str = "OPERATE SET R = ((R))/2;"; //redundant/odd parens
    printf("Test %d: %s\n",i,q_str);
    if(!parseQuery(q_str, &query, &err))
        ERR("%s",err.info);

    freeQuery(&query);
    printf("Passed\n");
    i++;


    //TEST 6
    q_str = "SELECT WHERE COL%100 != 0; OPERATE SET R = 0;"; //compound delimeter token (!=,<=,etc...)
    printf("Test %d: %s\n",i,q_str);
    if(!parseQuery(q_str, &query, &err))
        ERR("%s",err.info);

    freeQuery(&query);
    printf("Passed\n");
    i++;


    //TEST 7
    q_str = "SELECT WHERE NOT COL %20 > 1; OPERATE SET R = 0;"; //not
    printf("Test %d: %s\n",i,q_str);
    if(!parseQuery(q_str, &query, &err))
        ERR("%s",err.info);

    freeQuery(&query);
    printf("Passed\n");
    i++;


    //TEST 8
    q_str = "SELECT WHERE SIN(COL) < 0; OPERATE SET R = 0;"; //sin
    printf("Test %d: %s\n",i,q_str);
    if(!parseQuery(q_str, &query, &err))
        ERR("%s",err.info);

    freeQuery(&query);
    printf("Passed\n");
    i++;


    //TEST 9
    q_str = "SELECT WHERE COL%100 = 0 OR ROW % 100 = 0; OPERATE SET R = 255-R;"; //OR
    printf("Test %d: %s\n",i,q_str);
    if(!parseQuery(q_str, &query, &err))
        ERR("%s",err.info);

    freeQuery(&query);
    printf("Passed\n");
    i++;


    //TEST 10
    q_str = "SELECT WHERE COL % 10 = 0; SELECT WHERE ROW % 10 = 0; OPERATE SET R = B; OPERATE SET B = G;"; //compound select, compound operate
    printf("Test %d: %s\n",i,q_str);
    if(!parseQuery(q_str, &query, &err))
        ERR("%s",err.info);

    freeQuery(&query);
    printf("Passed\n");
    i++;


    //TEST 11
    q_str = "OPERATE SET R = B; OPERATE SET A = 255-((R+G+B)/3);"; //compound operate with complex operations
    printf("Test %d: %s\n",i,q_str);
    if(!parseQuery(q_str, &query, &err))
        ERR("%s",err.info);

    freeQuery(&query);
    printf("Passed\n");
    i++;


    //TEST 12
    q_str = "SELECT WHERE R < B; OPERATE SET R = B; SELECT WHERE G < B; OPERATE SET G = B;"; //multiple procedures
    printf("Test %d: %s\n",i,q_str);
    if(!parseQuery(q_str, &query, &err))
        ERR("%s",err.info);

    freeQuery(&query);
    printf("Passed\n");
    i++;


    //TEST 13
    q_str = "SELECT WHERE IN.R < IN.B; OPERATE SET R = OUT.B;"; //access targets
    printf("Test %d: %s\n",i,q_str);
    if(!parseQuery(q_str, &query, &err))
        ERR("%s",err.info);

    freeQuery(&query);
    printf("Passed\n");
    i++;


    //TEST 14
    q_str = "WHITE; SELECT WHERE COL%100 < 50; OPERATE SET R = R; OPERATE SET G = G; OPERATE SET B = B; SELECT WHERE OUT.R = 255 AND OUT.G = 255 AND OUT.B = 255; OPERATE SET G = 255-G;"; //weird long compound
    printf("Test %d: %s\n",i,q_str);
    if(!parseQuery(q_str, &query, &err))
        ERR("%s",err.info);

    freeQuery(&query);
    printf("Passed\n");
    i++;


    //TEST 15
    q_str = "SELECT WHERE IN[0,COL].R < 100; OPERATE SET R = 0;"; //simple accessor
    printf("Test %d: %s\n",i,q_str);
    if(!parseQuery(q_str, &query, &err))
        ERR("%s",err.info);

    freeQuery(&query);
    printf("Passed\n");
    i++;


    //TEST 16
    q_str = "SELECT WHERE IN[ROW-1,COL].R < 100; OPERATE SET R = 0;"; //expression in accessor
    printf("Test %d: %s\n",i,q_str);
    if(!parseQuery(q_str, &query, &err))
        ERR("%s",err.info);

    freeQuery(&query);
    printf("Passed\n");
    i++;


    return 0;
}