12 struct options opt = {
13 DEF_WIDTH, DEF_HEIGHT, DEF_BPP
16 int fb_width, fb_height, fb_bpp, fb_pitch;
17 int fb_rshift, fb_gshift, fb_bshift;
18 unsigned int fb_rmask, fb_gmask, fb_bmask;
20 unsigned int time_msec;
22 static const char *cpufeat[] = {
23 "fpu", "vme", "dbgext", "pse", "tsc", "msr", "pae", "mce", "cx8", "apic", 0,
24 "sep", "mtrr", "pge", "mca", "cmov", "pat", "pse36", "psn", "clf", 0,
25 "dtes", "acpi", "mmx", "fxsr", "sse", "sse2", "ss", "htt", "tm1", "ia64", "pbe"
28 static const char *cpufeat2[] = {
29 "sse3", "pclmul", "dtes64", "monitor", "dscpl", "vmx", "smx", "est", "tm2",
30 "ssse3", "cid", 0, "fma", "cx16", "etprd", "pdcm", 0, "pcide", "dca", "sse4.1",
31 "sse4.2", "x2apic", "movbe", "popcnt", 0, "aes", "xsave", "osxsave", "avx"
37 struct cpuid_info cpu;
39 if(read_cpuid(&cpu) != -1) {
40 printf("CPUID information:\n");
41 printf(" cpuid blocks: %d\n", (int)cpu.maxidx);
42 printf(" CPU vendor: ");
44 putchar(cpu.vendor[i]);
47 printf(" stepping: %u, model: %u, family: %u\n", CPUID_STEPPING(cpu.id),
48 CPUID_MODEL(cpu.id), CPUID_FAMILY(cpu.id));
50 for(i=0; i<sizeof cpufeat / sizeof *cpufeat; i++) {
51 if(cpufeat[i] && (cpu.feat & (1 << i))) {
52 printf(" %s", cpufeat[i]);
55 for(i=0; i<sizeof cpufeat2 / sizeof *cpufeat2; i++) {
56 if(cpufeat2[i] && (cpu.feat2 & (1 << i))) {
57 printf(" %s", cpufeat2[i]);
63 printf("initialized graphics %dx%d %dbpp\n", fb_width, fb_height, fb_bpp);
64 printf(" rgb mask: %x %x %x\n", fb_rmask, fb_gmask, fb_bmask);
65 printf(" rgb shift: %d %d %d\n", fb_rshift, fb_gshift, fb_bshift);
74 #define XORRGB(x, y, dx, dy, zoom, r, g, b) \
76 int xor = (((x) - fb_width/2) + (dx)) ^ (((y) - fb_height/2) + (dy)); \
82 #define XORRGB(x, y, dx, dy, zoom, r, g, b) \
84 int xor = ((((x) - fb_width/2) * (zoom) >> 16) + (dx)) ^ ((((y) - fb_height/2) * (zoom) >> 16) + (dy)); \
93 int i, j, r, g, b, xoffs, yoffs;
101 xoffs = COS(time_msec >> 2) * fb_width >> 14;
102 yoffs = SIN(time_msec >> 1) * fb_height >> 15;
104 zoom = (SIN(time_msec >> 3) << 1) + 0x18000;
111 for(i=0; i<fb_height; i++) {
112 for(j=0; j<fb_width; j++) {
113 XORRGB(j, i, xoffs, yoffs, zoom, r, g, b);
114 *fbptr16++ = (((r >> 3) << fb_rshift) & fb_rmask) |
115 (((g >> 2) << fb_gshift) & fb_gmask) |
116 (((b >> 3) << fb_bshift) & fb_bmask);
118 fbptr16 += (fb_pitch >> 1) - fb_width;
124 for(i=0; i<fb_height; i++) {
125 for(j=0; j<fb_width; j++) {
126 XORRGB(j, i, xoffs, yoffs, zoom, r, g, b);
131 fbptr += fb_pitch - fb_width * 3;
137 for(i=0; i<fb_height; i++) {
138 for(j=0; j<fb_width; j++) {
139 XORRGB(j, i, xoffs, yoffs, zoom, r, g, b);
140 *fbptr32++ = (((r) << fb_rshift) & fb_rmask) |
141 (((g) << fb_gshift) & fb_gmask) |
142 (((b) << fb_bshift) & fb_bmask);
144 fbptr32 += (fb_pitch >> 2) - fb_width;
150 void key_event(int key, int press)
154 int read_config(const char *fname)
159 if(!(fp = fopen(fname, "rb"))) {
164 if(!(ts = ts_load(fname))) {
168 opt.width = ts_lookup_int(ts, "rbench.width", DEF_WIDTH);
169 opt.height = ts_lookup_int(ts, "rbench.height", DEF_HEIGHT);
170 opt.bpp = ts_lookup_int(ts, "rbench.bpp", DEF_BPP);