nanogui: patch for microwindows in wdtv live
Subject:
Re: [nanogui] patch for microwindows in wdtv live
From:
"Greg Haerr" ####@####.####
Date:
10 Mar 2010 05:32:09 -0000
Message-Id: <05ed01cac013$01a71840$6564a8c0@winXP>
> 1. devdraw better performance
in include\device.h , it defines several macros:
MACRO_DRAWPIXEL, BPP32_DRAWPIXEL etc.
in engine\devdraw.c, GdDrawImage, it has performance issue.
in git source code:
===================
} else if (bpp > 8) { /* 16, 18, 24, or 32bpp*/
while (height > 0) {
===================
It will check the switch condition in this "while (height > 0)" loop
frequently, which has performance issue.
> Maybe you could merge wdtv code to git, this is a critical issue.
YuTao -
I wanted to let you know I haven't forgotten about
this critical speedup issue. I have been working
on getting some other important changes in place
first, before moving to optimize the GdDrawImage
routine and removing the switch condition from
the inner loop. I am looking into what
code is generated in general by gcc in several
cases when (possibly unsorted) switch statements
are used.
Your original WDTV code performs a good optimization
using macros, which we will use. However, it also
draws then directly to the framebuffer from the
engine layer, which means the code won't work on
X11 or other systems not using direct fb access.
I am still considering exactly how to speed this
up. The right way is to merge the DrawArea, Blit,
and DrawImage engine routines with the screen driver
DrawArea and Blit routines, but that's a lot of work,
and we need a case that works when the screen driver
doesn't have these entry points as well.
Regards,
Greg