#include <lib/gdi/accel.h>
#include <time.h>
-
-gFBDC *gFBDC::instance;
+#ifdef USE_LIBVUGLES2
+#include <vuplus_gles.h>
+#endif
gFBDC::gFBDC()
{
- instance=this;
fb=new fbClass;
if (!fb->Available())
{
delete fb;
delete[] surface.clut.data;
- instance=0;
}
void gFBDC::calcRamp()
fb->PutCMAP();
}
-void gFBDC::exec(gOpcode *o)
+void gFBDC::exec(const gOpcode *o)
{
switch (o->opcode)
{
++t;
+ fb->blit();
fb->waitVSync();
break;
}
+ case gOpcode::flush:
+#ifdef USE_LIBVUGLES2
+ if (gles_is_animation())
+ gles_do_animation();
+ else
+ fb->blit();
+#else
+ fb->blit();
+#endif
+ break;
+ case gOpcode::sendShow:
+ {
+#ifdef USE_LIBVUGLES2
+ gles_set_buffer((unsigned int *)surface.data);
+ gles_set_animation(1, o->parm.setShowHideInfo->point.x(), o->parm.setShowHideInfo->point.y(), o->parm.setShowHideInfo->size.width(), o->parm.setShowHideInfo->size.height());
+#endif
+ break;
+ }
+ case gOpcode::sendHide:
+ {
+#ifdef USE_LIBVUGLES2
+ gles_set_buffer((unsigned int *)surface.data);
+ gles_set_animation(0, o->parm.setShowHideInfo->point.x(), o->parm.setShowHideInfo->point.y(), o->parm.setShowHideInfo->size.width(), o->parm.setShowHideInfo->size.height());
+#endif
+ break;
+ }
+#ifdef USE_LIBVUGLES2
+ case gOpcode::setView:
+ {
+ gles_viewport(o->parm.setViewInfo->size.width(), o->parm.setViewInfo->size.height(), fb->Stride());
+ break;
+ }
+#endif
default:
gDC::exec(o);
break;
surface.data = fb->lfb;
surface.offset = 0;
- surface.data_phys = 50*1024*1024; // FIXME
+ surface.data_phys = fb->getPhysAddr();
int fb_size = surface.stride * surface.y;
setPalette();
}
-// eAutoInitPtr<gFBDC> init_gFBDC(eAutoInitNumbers::graphic-1, "GFBDC");
-#ifndef SDLDC
eAutoInitPtr<gFBDC> init_gFBDC(eAutoInitNumbers::graphic-1, "GFBDC");
-#endif