You can blit RGB565 easily with DirectScreenAccess. If you were using OpenglES before, then this is probably good solution for you. Just take a look at some S60 DirectScreenAccess examples how to create DirectScreenAccess etc.
Then you just have to create a bitmap with EColor64K, copy the buffer into bitmap, and blit it with DirectSceenAccess-
Here is some meta code to help you with DSA
iDSA = CDirectScreenAccess::NewL( CCoeEnv::Static()->WsSession(), *device, iWindow, *this );
iGc = iDSA->Gc();
iBitmap = new (ELeave) CFbsBitmap;
iBitmap->Create( screensize, EColor64K );
TUint8 *bmpData = (TUint8 *) iBitmap->DataAddress();
//copy the buffer into bitmap with bmpData pointer..
//unlockHeap and blit
iGc->BitBlt(TPoint(0, 0), iBitmap);