At the end of eglSwapBuffers function, provided by the OpenVG 1.1 reference implementation (rieglos.cpp), I see the following code:
if (ctx->tmp)
{
// NOTE: we assume here that the display is always in sRGB color space
GdiFlush();
VGImageFormat f = VG_sXBGR_8888;
if (isBigEndian())
f = VG_sRGBX_8888;
vgReadPixels(ctx->tmp, w*sizeof(unsigned int), f, 0, 0, w, h);
SelectObject(ctx->bufDC, ctx->bufDIB);
HDC winDC = GetDC(ctx->window);
BitBlt(winDC, 0, 0, w, h, ctx->bufDC, 0, 0, SRCCOPY);
ReleaseDC(ctx->window, winDC);
SelectObject(ctx->bufDC, NULL);
}
The format assumed for the display (VG_sXBGR_8888), wouldn’t it be the same chosen by the selected EGLConfig (the one selected by surfAttributes in eglCreateWindowSurface call) ?