Re: [AD] Changes to aWiki

[ Thread Index | Date Index | More lists.liballeg.org/allegro-developers Archives ]


ok, while we were talking about optimizing on a per CPU basis, we figured out that it would also be nice to include system capabilities while enabling vtable dispatch... (the pseudo code written below should give an idea on how to initialize vtables on a CPU basis)

it may be considered worthwhile doing the same thing for GFX capabilities as well (GPU features and/or OpenGL extensions)

AL_VTABLE_LIST[]={
al_line_draw,AL_LINE_VTABLE,al_primitive_chooser
al_blit,AL_BLIT_VTABLE,al_blitsys_chooser
}

//bad example
FUNC_COMPAT_TABLE AL_LINE_VTABLE {
al_mmx_line,TARGSYS_MMX
al_3dnow_line,TARGSYS_3DNOW,
al_c_line,TARGSYS_ALL,
0,TARGSYS_NONE,
}

int al_blitsys_chooser(AL_SYS_CAPS SCAPS, FUNC_COMPAT_TABLE TABLE, int size) {
int i;
int index=-1;
for (i=0;i<size;i++) {
if(TABLE[i].CAPS&SCAPS)
index=i;
}
return i;
}

int al_sysvtable_chooser(AL_VTABLE_LIST VTB, int size) {
int i;
for(i=0;i<size;i++) {
VTB[i].func=VTB[i].chooser(VTB[i].FCT);
}
}


--
Karthik
http://guilt.bafsoft.net

Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/