From 21180fdf54f0c578af0959df088de308ce25ca61 Mon Sep 17 00:00:00 2001 From: John Tsiombikas Date: Sun, 21 Aug 2016 05:42:35 +0300 Subject: [PATCH] optimizations and best color depth attempt --- src/main.c | 25 ++++++++++++++++--------- src/tunnel.c | 34 ++++++---------------------------- 2 files changed, 22 insertions(+), 37 deletions(-) diff --git a/src/main.c b/src/main.c index 9e27509..f0588c0 100644 --- a/src/main.c +++ b/src/main.c @@ -20,19 +20,26 @@ static int quit; int main(void) { + int i, trybpp[] = {32, 24, 16, 0}; + fbgfx_save_video_mode(); - if(!(vmem = fbgfx_get_video_mode(&xsz, &ysz, &depth))) { - return 1; - } + fbgfx_get_video_mode(&xsz, &ysz, &depth); - /*if(!(vmem = fbgfx_set_video_mode(xsz, ysz, 16))) { - return 1; + for(i=0; trybpp[i]; i++) { + if(!(vmem = fbgfx_set_video_mode(xsz, ysz, trybpp[i]))) { + continue; + } + fbgfx_get_video_mode(&xsz, &ysz, &depth); + if(depth == trybpp[i]) { + break; + } + fprintf(stderr, "failed to set color depth: %dbpp\n", trybpp[i]); } - fbgfx_get_video_mode(&xsz, &ysz, &depth); - if(depth != 16) { - fprintf(stderr, "failed to set color depth: 16bpp\n"); + if(trybpp[i] == 0) { + fprintf(stderr, "no usable color depths found\n"); goto end; - }*/ + } + if(fbev_init() == -1) { goto end; } diff --git a/src/tunnel.c b/src/tunnel.c index f4b3984..c6504ce 100644 --- a/src/tunnel.c +++ b/src/tunnel.c @@ -1,6 +1,7 @@ #include #include #include +#include #include #include "tpool.h" #include "tunnel.h" @@ -172,29 +173,10 @@ static void tunnel_color(int *rp, int *gp, int *bp, long toffs, unsigned int tpa } #define PACK_RGB16(r, g, b) \ - (((((r) >> 3) & 0x1f) << 11) | ((((g) >> 2) & 0x3f) << 5) | ((b) & 0x1f)) + (((((r) >> 3) & 0x1f) << 11) | ((((g) >> 2) & 0x3f) << 5) | (((b) >> 3) & 0x1f)) #define PACK_RGB32(r, g, b) \ ((((r) & 0xff) << 16) | (((g) & 0xff) << 8) | ((b) & 0xff)) -#define PUTPIXEL(pixtype, col) \ - do { \ - int k; \ - pixtype *ptr = pixels; \ - for(k=0; k> 1); for(i=0; i