Software support for the new TMU
[mw/milkymist.git] / software / demo / renderer.c
1 /*
2  * Milkymist VJ SoC (Software)
3  * Copyright (C) 2007, 2008, 2009 Sebastien Bourdeauducq
4  *
5  * This program is free software: you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation, version 3 of the License.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
16  */
17
18 #include <stdio.h>
19 #include <math.h>
20 #include <system.h>
21
22 #include <hal/pfpu.h>
23 #include <hal/vga.h>
24
25 #include "parser_helper.h"
26 #include "eval.h"
27 #include "apipe.h"
28 #include "renderer.h"
29
30 unsigned int renderer_hmeshlast;
31 unsigned int renderer_vmeshlast;
32 unsigned int renderer_texsize;
33
34 void renderer_init()
35 {
36         renderer_hmeshlast = 32;
37         renderer_vmeshlast = 32;
38         renderer_texsize = 512;
39         printf("RDR: renderer ready (mesh:%dx%d, texsize:%d)\n", renderer_hmeshlast, renderer_vmeshlast, renderer_texsize);
40 }
41
42 static struct eval_state eval;
43
44 int renderer_start(char *preset_code)
45 {
46         struct preset *ast;
47
48         ast = generate_ast(preset_code);
49         if(!ast) return 0;
50         printf("RDR: preset parsing successful\n");
51
52         eval_init(&eval, renderer_hmeshlast, renderer_vmeshlast, vga_hres, vga_vres);
53         if(!eval_load_preset(&eval, ast)) return 0;
54         printf("RDR: preset compilation successful\n");
55         free_ast(ast);
56
57         apipe_start(&eval);
58
59         return 1;
60 }
61
62 void renderer_stop()
63 {
64         apipe_stop();
65 }