is EGL necessary for OpenVG?

Dear Sir,
I am confused by EGL spec. It mentioned that it was in interface between OpenVG and native windows system. Here is what I don’t understanding:

  1. Why cann’t we just open the framebuffer driver for OpenVG application
    and write to there directly?

  2. Why “context” and "surface"s’ exist are must for EGL and OpenVG?
    Maybe I don’t get the true meaning of “context” and “surface”…
    Why cann’t we just have either “surface” or “context” ?

  3. For OpenVG, under what condition may we allocate EGL’s
    “Window surface”, “PBuffers surface” or “Pixmap surface”?

Best Regards,
Kevin

Let myself answer my own question, if I am wrong, please correct me.

  1. Yes, you may create “frame buffer” and let EGL create surface and display based on
    target “frame buffer”. All you need to know is understand EGL and find a way to
    creat a link in between.

  2. context : define openvg setting, such as RGB bits,etc…Both EGL and OpenVG would
    create context structure, and there is a pointer to link OpenVG Context to EGL
    context.
    surface: create drawable value, here “drawable” means color buffer,
    including RGB buffer and mask buffer (or alpha buffer) . If one use GTK as window system, GTK created context will link to EGLsurface. So, one need both context and surface because they served for different need.

  3. This is not easy to answer, it depends on what you would like to do, for example, if
    one use opengl as underline rasterizer, it may create “PBuffer” and allow opengl to
    tread it as “texture” and render to the surface. Not sure when "pixmem buffer will be
    used here? “Window surface”,for example, if one wish to render an openvg graphic on
    GTK, this is the surface that maybe used.

Any feedback are welcome.