1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <stdint.h>
4 #include <string.h>
5 #include <rtthread.h>
6 #include <hal_mem.h>
7 #include <log.h>
8 #include <video/sunxi_display2.h>
9 #include "disp_layer_cfg.h"
10 #include "disp_mem.h"
11
12 int msleep(unsigned int msecs);
13
14 static u32 g_screen_index;
15 #define DELAY_MS 100
16
show_vi_layer(struct test_layer_cfg * cfg,u32 alpha_mode,u32 alpha_value)17 static int show_vi_layer(struct test_layer_cfg *cfg, u32 alpha_mode, u32 alpha_value)
18 {
19 if (!cfg)
20 return -1;
21
22 cfg->mem_id = 1;
23 cfg->screen_id = g_screen_index;
24 cfg->layer_cfg.channel = 0;
25 cfg->layer_id = 0;
26 cfg->layer_cfg.layer_id = 0;
27
28 cfg->layer_cfg.info.fb.format = 72;
29 cfg->layer_cfg.info.fb.size[0].width = 1280;
30 cfg->layer_cfg.info.fb.size[0].height = 720;
31 cfg->layer_cfg.info.fb.crop.x = 0;
32 cfg->layer_cfg.info.fb.crop.y = 0;
33 cfg->layer_cfg.info.fb.crop.width = 1280;
34 cfg->layer_cfg.info.fb.crop.height = 720;
35 cfg->layer_cfg.info.fb.align[0] = 4;
36 cfg->layer_cfg.info.mode = 0;
37 cfg->layer_cfg.info.alpha_mode = alpha_mode;
38 cfg->layer_cfg.info.alpha_value = alpha_value;
39 cfg->layer_cfg.info.zorder = 0;
40 cfg->layer_cfg.info.screen_win.x = 0;
41 cfg->layer_cfg.info.screen_win.y = 0;
42
43 return disp_layer_cfg(cfg);
44 }
45
show_ui_layer(struct test_layer_cfg * cfg,u32 ch,u32 alpha_mode,u32 alpha_value)46 static int show_ui_layer(struct test_layer_cfg *cfg,u32 ch, u32 alpha_mode, u32 alpha_value)
47 {
48 if (!cfg)
49 return -1;
50
51 cfg->mem_id = 0;
52 cfg->screen_id = g_screen_index;
53 cfg->layer_cfg.channel = ch;
54 cfg->layer_id = 0;
55 cfg->layer_cfg.layer_id = 0;
56
57 cfg->layer_cfg.info.fb.format = 0;
58 cfg->layer_cfg.info.fb.size[0].width = 800;
59 cfg->layer_cfg.info.fb.size[0].height = 480;
60 cfg->layer_cfg.info.fb.crop.x = 0;
61 cfg->layer_cfg.info.fb.crop.y = 0;
62 cfg->layer_cfg.info.fb.crop.width = 800;
63 cfg->layer_cfg.info.fb.crop.height = 480;
64 cfg->layer_cfg.info.fb.align[0] = 4;
65 cfg->layer_cfg.info.mode = 0;
66 cfg->layer_cfg.info.alpha_mode = alpha_mode;
67 cfg->layer_cfg.info.alpha_value = alpha_value;
68 cfg->layer_cfg.info.zorder = 1;
69 cfg->layer_cfg.info.screen_win.x = 0;
70 cfg->layer_cfg.info.screen_win.y = 0;
71
72 return disp_layer_cfg(cfg);
73 }
74
disp_layer_alpha_test(int argc,char ** argv)75 int disp_layer_alpha_test(int argc, char **argv)
76 {
77 struct test_layer_cfg test_cfg;
78 int ch_index = 0, i , j;
79 int ch_num = 3, vi_chn_num = 1;
80 /*main test start*/
81
82 if (argc == 2) {
83 g_screen_index = atoi(argv[1]);
84 } else
85 g_screen_index = 0;
86
87 disp_layer_clear_all(g_screen_index);
88
89 printf("request mem_id 0\n");
90 disp_mem(0, 800, 480, 0, "./pic/ui_800x480_double_151.bin");
91
92 disp_mem(1, 1280, 800, 0, "./pic/bike_1280x720_020.bin");
93
94 printf("Start show layer\n");
95 memset(&test_cfg, 0, sizeof(struct test_layer_cfg));
96 show_vi_layer(&test_cfg, 0, 255);
97
98 memset(&test_cfg, 0, sizeof(struct test_layer_cfg));
99 msleep(DELAY_MS);
100 ch_index = vi_chn_num;
101 while(ch_index < ch_num) {
102 show_ui_layer(&test_cfg, ch_index, 1, 255);
103 msleep(DELAY_MS);
104 /*pixel mode*/
105 for (i = 0; i < 255; i+=25) {
106 show_ui_layer(&test_cfg, ch_index, 1, i);
107 msleep(DELAY_MS);
108 }
109 msleep(DELAY_MS);
110 show_ui_layer(&test_cfg, ch_index, 1, 255);
111 msleep(DELAY_MS);
112 /*pixel mode*/
113 for (i = 0; i < 255; i+=25) {
114 show_ui_layer(&test_cfg, ch_index, 0, i);
115 msleep(DELAY_MS);
116 }
117 /*global pixel mode*/
118 for (i = 0; i < 255; i+=25) {
119 show_ui_layer(&test_cfg, ch_index, 2, i);
120 msleep(DELAY_MS);
121 }
122 ++ch_index;
123 }
124
125
126
127 disp_layer_clear_all(g_screen_index);
128 msleep(100);
129 disp_mem_clear(0);
130 disp_mem_clear(1);
131 return 0;
132 }
133
134 FINSH_FUNCTION_EXPORT_ALIAS(disp_layer_alpha_test, __cmd_disp_layer_alpha_test, disp_layer_alpha_test);
135