| Name |
| |
| HI_clientpixmap |
| |
| Name Strings |
| |
| EGL_HI_clientpixmap |
| |
| Contributors |
| |
| Guillaume Portier |
| |
| Contacts |
| |
| HI support. (support_renderion 'at' hicorp.co.jp) |
| |
| Status |
| |
| Shipping (Revision 3). |
| |
| Version |
| |
| Last Modified Date: June 7, 2010 |
| Revision 3 |
| |
| Number |
| |
| EGL Extension #24 |
| |
| Dependencies |
| |
| This extension is written against the wording of the EGL 1.4 |
| Specification. |
| |
| Overview |
| |
| The extension specified in this document provide a mechanism for |
| using memory allocated by the application as a color-buffer. |
| |
| |
| New Types |
| |
| EGLClientPixmapHI : specifies the width, height, stride, format |
| and memory pointer of the pixmap to be used by the function |
| eglCreatePixmapSurfaceHI to create the PixmapSurface. |
| |
| Members: |
| void* pData; |
| Pointer to a memory buffer allocated by the application |
| that will contain the result of the drawing operations. |
| It is up to the application to ensure that the buffer |
| size corresponds to iHeight * iStride * sizeof(pixel). |
| EGLint iWidth; |
| Width of the buffer in pixels. |
| EGLint iHeight; |
| Height of the buffer in pixels. The height of the buffer |
| can be negative; in that case the result of the |
| drawing operations will be vertically swapped. When |
| positive, pData will point at the bottom-left corner |
| of the image; when negative, to the top-left corner. |
| EGLint iStride; |
| Stride of the buffer, in pixels. It is important to note |
| that each row of the buffer must start on 32-bit |
| boundaries. |
| |
| New Procedures and Functions |
| |
| eglCreatePixmapSurfaceHI : creates an EGL ClientPixmap from |
| an EGLClientPixmapHI structure. eglCreatePixmapSurfaceHI usage |
| is identical to eglCreatePixmapSurface. In addition the ordering |
| of the color components in the color buffer can be specified by |
| the surface attribute described in the EGL_HI_colorformats |
| extension. |
| |
| In order to update the pointer to the data of the surface, the application |
| can call eglSurfaceAttrib with the EGL_CLIENT_PIXMAP_POINTER_HI attribute. |
| See below for an example. |
| |
| New Tokens |
| |
| None. |
| |
| Example |
| |
| |
| EGLClientPixmapHI pixmap; |
| EGLint attrib_list[] = { |
| EGL_RED_SIZE, 8, |
| EGL_GREEN_SIZE, 8, |
| EGL_BLUE_SIZE, 8, |
| EGL_ALPHA_SIZE, 8, |
| EGL_SURFACE_TYPE, EGL_PIXMAP_BIT, |
| // Specifying ARGB as a color format |
| EGL_COLOR_FORMAT_HI, EGL_COLOR_ARGB_HI, |
| EGL_NONE |
| }; |
| |
| // ‘access' being the memory to render into. |
| pixmap.pData = framebuffer.access; |
| pixmap.iWidht = framebuffer.width; |
| pixmap.iHeight = framebuffer.height; |
| pixmap.iStride = framebuffer.stride; |
| |
| |
| |
| //Get Config ARGB8 |
| eglChooseConfig(dpy, attrib_list, &config, 1, &num_config); |
| |
| // Create the pixmap |
| #ifdef EGL_EGLEXT_PROTOTYPES |
| |
| eglCreatePixmapSurfaceHI(eglDisplay, ppkConfig[0], &gHiPixmap); |
| |
| #else |
| |
| pfCreatePixmap = (PFNEGLCREATEPIXMAPSURFACEHIPROC) |
| eglGetProcAddress("eglCreatePixmapSurfaceHI"); |
| pfCreatePixmap(eglDisplay, ppkConfig[0], &gHiPixmap); |
| |
| #endif /* EGL_EGLEXT_PROTOTYPES */ |
| |
| |
| // Update the surface data pointer, from now we will render into the |
| // memory pointed by 'access2'. |
| eglSurfaceAttrib(eglDisplay, eglSurface, EGL_CLIENT_PIXMAP_POINTER_HI, |
| offscreen.access2); |
| |
| Issues |
| |
| None |
| |
| |
| Revision History |
| |
| June 7, 2010 (r3) |
| - Allow updating the pixmap data pointer using eglSurfaceAttrib with |
| the EGL_CLIENT_PIXMAP_POINTER_HI attribute. |
| |
| June 16, 2009 (r2) |
| - Split HI_clientpixmap into two different extensions: |
| - HI_colorformats |
| - HI_clientpixmap |
| |
| March 3, 2009 (r1) |