HAL
[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 <libc.h>
19 #include <console.h>
20 #include <math.h>
21 #include <system.h>
22
23 #include <hal/pfpu.h>
24 #include <hal/vga.h>
25
26 #include "parser_helper.h"
27 #include "eval.h"
28 #include "apipe.h"
29 #include "renderer.h"
30
31 unsigned int renderer_hmeshlast;
32 unsigned int renderer_vmeshlast;
33 unsigned int renderer_texsize;
34
35 void renderer_init()
36 {
37         renderer_hmeshlast = 32;
38         renderer_vmeshlast = 24;
39         renderer_texsize = 512;
40         printf("RDR: renderer ready (mesh:%dx%d, texsize:%d)\n", renderer_hmeshlast, renderer_vmeshlast, renderer_texsize);
41 }
42
43 static struct eval_state eval;
44
45 int renderer_start(char *preset_code)
46 {
47         struct preset *ast;
48
49         ast = generate_ast(preset_code);
50         if(!ast) return 0;
51         printf("RDR: preset parsing successful\n");
52
53         eval_init(&eval, renderer_hmeshlast, renderer_vmeshlast, vga_hres, vga_vres);
54         if(!eval_load_preset(&eval, ast)) return 0;
55         printf("RDR: preset compilation successful\n");
56         free_ast(ast);
57
58         apipe_start(&eval);
59
60         return 1;
61 }
62
63 void renderer_stop()
64 {
65         apipe_stop();
66 }