Mercurial > hg > Members > yutaka > manager
comparison ppe/Menu.cc @ 7:febf899d0043
mandelbrot
author | yutaka@localhost.localdomain |
---|---|
date | Mon, 12 Apr 2010 00:32:34 +0900 |
parents | 39d405bc46b7 |
children | ec2c1003f9b6 |
comparison
equal
deleted
inserted
replaced
6:b25035e3282d | 7:febf899d0043 |
---|---|
12 | 12 |
13 list_num = SPE_NUM; | 13 list_num = SPE_NUM; |
14 | 14 |
15 fb_t fb = get_fbdev_addr(); | 15 fb_t fb = get_fbdev_addr(); |
16 int max_size = MAX_DMA_SIZE - sizeof(task_head_t); | 16 int max_size = MAX_DMA_SIZE - sizeof(task_head_t); |
17 int all_task_num = fb.height; | 17 int all_line_num = fb.height; |
18 int line_size = fb.width * fb.bpp / DIV_BYTE; | 18 int line_size = fb.width * fb.bpp / DIV_BYTE; |
19 | 19 |
20 // line num per task | 20 // line num per task |
21 int lnpt = max_size / line_size; | 21 int lnpt = max_size / line_size; |
22 int out_size = lnpt * line_size; | 22 int out_size = lnpt * line_size; |
23 int list_length = (all_task_num / list_num) / lnpt; | 23 int list_length = (all_line_num / list_num) / lnpt; |
24 | 24 |
25 int in_size = sizeof(int)*4; | 25 int in_size = sizeof(int)*4; |
26 int real_in_size = sizeof(int)*2; | 26 int real_in_size = sizeof(int)*2; |
27 | 27 |
28 task_head_t *list_head = (task_head_t*)allocate(sizeof(task_head_t)*list_num); | 28 task_head_t *list_head = (task_head_t*)allocate(sizeof(task_head_t)*list_num); |
29 task_t **tail = (task_t**)allocate(sizeof(task_t*)*list_num); | |
29 | 30 |
30 int index = 0; | 31 int index = 0; |
31 | |
32 for (int i = 0; i < list_num; i++) { | 32 for (int i = 0; i < list_num; i++) { |
33 | 33 tail[i] = entry_head(&list_head[i]); |
34 task_t *head = entry_head(&list_head[i]); | 34 } |
35 | 35 |
36 for (int j = 0; j < list_length; j++) { | 36 for (int i = 0; i < all_line_num / lnpt; i++) { |
37 | |
38 task_t *task = task_allocate(in_size, 0); | 37 task_t *task = task_allocate(in_size, 0); |
39 task->head->ea_out = (unsigned long long) (unsigned long) &fb.pixels[index*out_size]; | 38 task->head->ea_out = (unsigned long long) (unsigned long) &fb.pixels[index*out_size]; |
40 task->head->size_out = out_size; | 39 task->head->size_out = out_size; |
41 int *in = (int*)task->input; | 40 int *in = (int*)task->input; |
42 | 41 |
45 | 44 |
46 int pin_in = in_size - real_in_size; | 45 int pin_in = in_size - real_in_size; |
47 int pin_out = 0; | 46 int pin_out = 0; |
48 | 47 |
49 set_pin(task, pin_in, pin_out); | 48 set_pin(task, pin_in, pin_out); |
50 head = add_list(head, task); | 49 tail[i%list_num] = add_list(tail[i%list_num], task); |
51 | 50 |
52 index++; | 51 index++; |
53 | 52 |
54 } | 53 } |
54 | |
55 // for (int i = 0; i < list_num; i++) { | |
55 | 56 |
56 } | 57 // task_t *head = entry_head(&list_head[i]); |
58 | |
59 // for (int j = 0; j < list_length; j++) { | |
60 | |
61 // task_t *task = task_allocate(in_size, 0); | |
62 // task->head->ea_out = (unsigned long long) (unsigned long) &fb.pixels[index*out_size]; | |
63 // task->head->size_out = out_size; | |
64 // int *in = (int*)task->input; | |
65 | |
66 // in[0] = index*out_size; | |
67 // in[1] = (index+1)*out_size; | |
68 | |
69 // int pin_in = in_size - real_in_size; | |
70 // int pin_out = 0; | |
71 | |
72 // set_pin(task, pin_in, pin_out); | |
73 // head = add_list(head, task); | |
74 | |
75 // index++; | |
76 | |
77 // } | |
78 | |
79 // } | |
57 | 80 |
58 printf("return run\n"); | 81 printf("return run\n"); |
59 | 82 |
60 //munmap(fb.pixels, fb.size); | 83 //munmap(fb.pixels, fb.size); |
61 //close(fb.fd); | 84 //close(fb.fd); |