OpenCores
URL https://opencores.org/ocsvn/or1k_old/or1k_old/trunk

Subversion Repositories or1k_old

[/] [or1k_old/] [trunk/] [mw/] [src/] [contrib/] [speedtst/] [speed.c] - Blame information for rev 1782

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 673 markom
#include <stdio.h>
2
#include <stdlib.h>
3
#include <time.h>
4
 
5
#ifdef TEST_FOR_X
6
#include <X11/Xlib.h>
7
#else
8
#define MWINCLUDECOLORS
9
#include <microwin/nano-X.h>
10
#endif
11
 
12
#define NUM_POINTS      80
13
 
14
time_t start_time, end_time;
15
 
16
void start_timer()
17
{
18
        time(&start_time);
19
}
20
 
21
void end_timer()
22
{
23
        time(&end_time);
24
        printf("start=%lu, end=%lu, time=%lu\n",
25
                start_time, end_time, end_time-start_time);
26
}
27
 
28
int main()
29
{
30
#ifdef TEST_FOR_X
31
        Display         *display;
32
        Window          window;
33
        GC              gc;
34
        XGCValues       gcValues;
35
        Colormap        colormap;
36
        Pixmap          src_pixmap;
37
        unsigned long   fgColor, bgColor;
38
        int             screenNum;
39
        XPoint          points[NUM_POINTS];
40
#else
41
        GR_WINDOW_ID    window;
42
        GR_WINDOW_ID    src_pixmap;
43
        unsigned char*  src_pixmap_buf[320*240*2];
44
        GR_GC_ID        gc;
45
        GR_POINT        points[NUM_POINTS];
46
#endif
47
 
48
        int             c, c1,  count=4500;
49
        int             x, y, x1, y1, x2, y2;
50
 
51
#ifdef TEST_FOR_X
52
        if(!(display=XOpenDisplay(""))) {
53
                printf("Cannot connect to X.\n");
54
        }
55
        screenNum = DefaultScreen(display);
56
        colormap = DefaultColormap(display, screenNum);
57
 
58
        bgColor = BlackPixel(display, screenNum);
59
        fgColor = WhitePixel(display, screenNum);
60
        window = XCreateSimpleWindow(display, RootWindow(display, screenNum),
61
                0, 0 , 639, 479, 0,
62
                fgColor, bgColor);
63
        src_pixmap = XCreatePixmap(display, window, 320, 240, 16);
64
        XMapRaised(display, window);
65
        gcValues.background = bgColor;
66
        gcValues.foreground = fgColor;
67
        gcValues.line_width = 1;
68
        gcValues.line_style = LineSolid;
69
        gcValues.fill_style = FillSolid;
70
        gcValues.fill_rule = WindingRule;
71
        gcValues.arc_mode = ArcPieSlice;
72
        gc = XCreateGC(display, window,
73
                GCForeground  | GCBackground | GCLineWidth | GCLineStyle |
74
                GCFillStyle,
75
                &gcValues);
76
 
77
#else   
78
        GrOpen();
79
        window = GrNewWindow(GR_ROOT_WINDOW_ID, 0, 0, 639, 479, 0, BLACK, BLUE);
80
        src_pixmap = GrNewPixmap(640, 480, src_pixmap_buf);
81
        GrMapWindow(window);
82
        gc = GrNewGC();
83
        GrSetGCForeground(gc, WHITE);
84
        GrSetGCBackground(gc, BLACK);
85
        GrSetGCMode(gc, GR_MODE_COPY);
86
#endif
87
 
88
 
89
 
90
 
91
 
92
        // Horizontal Line
93
        ////////////////////////////////////////////////
94
        printf("Horizontal Line(XDrawLine)\n");
95
        start_timer();
96
        for(c=0; c<count*20; c++)
97
        {
98
                y1=random()%480;
99
#ifdef TEST_FOR_X
100
                XDrawLine(display, window, gc, 0, y1, 639, y1);
101
                XFlush(display);
102
#else
103
                GrLine(window, gc, 0, y1, 639, y1);
104
                GrFlush();
105
#endif
106
        }
107
        end_timer();
108
#ifdef TEST_FOR_X
109
        XClearWindow(display, window);
110
#else
111
        GrClearWindow(window, GR_TRUE);
112
#endif
113
 
114
        // Vertical Line
115
        /////////////////////////////////////////////////
116
        printf("Vertical Line(XDrawLine)\n");
117
        start_timer();
118
        for(c=0; c<count*19; c++)
119
        {
120
                x1=random()%640;
121
#ifdef TEST_FOR_X
122
                XDrawLine(display, window, gc, x1, 0, x1, 479);
123
                XFlush(display);
124
#else
125
                GrLine(window, gc, x1, 0, x1, 479);
126
                GrFlush();
127
#endif
128
        }
129
        end_timer();
130
#ifdef TEST_FOR_X
131
        XClearWindow(display, window);
132
#else
133
        GrClearWindow(window, GR_TRUE);
134
#endif
135
 
136
        // General Line
137
        /////////////////////////////////////////////////
138
        printf("General Line(XDrawLine)\n");
139
        start_timer();
140
        for(c=0; c<count*22; c++)
141
        {
142
                x1 = random()%640;
143
                x2 = random()%640;
144
                y1 = random()%480;
145
                y2 = random()%480;
146
#ifdef TEST_FOR_X
147
                XDrawLine(display, window, gc, x1, y1, x2, y2);
148
                XFlush(display);
149
#else
150
                GrLine(window, gc, x1, y1, x2, y2);
151
                GrFlush();
152
#endif
153
        }
154
        end_timer();
155
#ifdef TEST_FOR_X
156
        XClearWindow(display, window);
157
#else
158
        GrClearWindow(window, GR_TRUE);
159
#endif
160
 
161
        // Point
162
        //////////////////////////////////////////////////
163
        printf("XPoint\n");
164
        start_timer();
165
        for(c=0; c<count*25; c++)
166
        {
167
                x1 = random()%640;
168
                y1 = random()%480;
169
#ifdef TEST_FOR_X
170
                XDrawPoint(display, window, gc, x1, y1);
171
                XFlush(display);
172
#else
173
                GrPoint(window, gc, x1, y1);
174
                GrFlush();
175
#endif
176
        }
177
        end_timer();
178
#ifdef TEST_FOR_X
179
        XClearWindow(display, window);
180
#else
181
        GrClearWindow(window, GR_TRUE);
182
#endif
183
 
184
        // Rectangle
185
        //////////////////////////////////////////////////
186
        printf("XRectangle\n");
187
        start_timer();
188
        for(c=0; c<count*20; c++)
189
        {
190
                x1=random()%639;
191
                y1=random()%479;
192
                x2=random()%(639-x1)+1;
193
                y2=random()%(479-y1)+1;
194
#ifdef TEST_FOR_X
195
                XDrawRectangle(display, window, gc, x1, y1, x2, y2);
196
                XFlush(display);
197
#else
198
                GrRect(window, gc, x1, y1, x2, y2);
199
                GrFlush();
200
#endif
201
        }
202
        end_timer();
203
#ifdef TEST_FOR_X
204
        XClearWindow(display, window);
205
#else
206
        GrClearWindow(window, GR_TRUE);
207
#endif
208
 
209
        // FillRectangle
210
        //////////////////////////////////////////////////
211
        printf("XFillRectangle\n");
212
        start_timer();
213
        for(c=0; c<count*18; c++)
214
        {
215
                x1=random()%639;
216
                y1=random()%479;
217
                x2=random()%(639-x1)+1;
218
                y2=random()%(479-y1)+1;
219
#ifdef TEST_FOR_X
220
                XFillRectangle(display, window, gc, x1, y1, x2, y2);
221
                XFlush(display);
222
#else
223
                GrFillRect(window, gc, x1, y1, x2, y2);
224
                GrFlush();
225
#endif
226
        }
227
        end_timer();
228
#ifdef TEST_FOR_X
229
 
230
        XClearWindow(display, window);
231
#else
232
        GrClearWindow(window, GR_TRUE);
233
#endif
234
 
235
        // FillPolygon
236
        //////////////////////////////////////////////////
237
        printf("XFillPolygon\n");
238
        start_timer();
239
        for(c=0; c<count; c++)
240
        {
241
                for(c1=0; c1<NUM_POINTS; c1++)
242
                {
243
                        points[c1].x = random()%640;
244
                        points[c1].y = random()%480;
245
                }
246
#ifdef TEST_FOR_X
247
                XFillPolygon(display, window, gc, points, NUM_POINTS,
248
                        0, 0);
249
                XFlush(display);
250
#else
251
                GrFillPoly(window, gc, NUM_POINTS, points);
252
                GrFlush();
253
#endif
254
        }
255
        end_timer();
256
#ifdef TEST_FOR_X
257
        XClearWindow(display, window);
258
#else
259
        GrClearWindow(window, GR_TRUE);
260
#endif
261
 
262
 
263
        // CopyArea
264
        /////////////////////////////////////////////////
265
        printf("XCopyArea\n");
266
        start_timer();
267
        for(c=0; c<count*5; c++)
268
        {
269
                x1=random()%320;
270
                y1=random()%240;
271
                x2=random()%319+1;
272
                y2=random()%239+1;
273
 
274
#ifdef TEST_FOR_X
275
                XCopyArea(display, src_pixmap, window, gc,
276
                        0, 0, x2, y2, x1, y1);
277
                XFlush(display);
278
#else
279
                GrCopyArea(window, gc, x1, y1, x2 ,y2, src_pixmap,
280
                        0, 0, 0);
281
                GrFlush();
282
#endif
283
        }
284
        end_timer();
285
 
286
#ifdef TEST_FOR_X
287
        XDestroyWindow(display, window);
288
#else
289
        GrClose();
290
#endif
291
}
292
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.