EGLAPI EGLImageKHR EGLAPIENTRY eglCreateImageKHR(EGLDisplay display, EGLContext context, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list) { VALIDATE_DISPLAY(display); VALIDATE_CONTEXT(context); // We only support EGL_GL_TEXTURE_2D images if (target != EGL_GL_TEXTURE_2D_KHR) { RETURN_ERROR(EGL_NO_IMAGE_KHR,EGL_BAD_PARAMETER); } ThreadInfo* thread = getThreadInfo(); ShareGroupPtr sg = thread->shareGroup; if (sg.Ptr() != NULL) { unsigned int globalTexName = sg->getGlobalName(TEXTURE, SafeUIntFromPointer(buffer)); if (!globalTexName) return EGL_NO_IMAGE_KHR; ImagePtr img( new EglImage() ); if (img.Ptr() != NULL) { ObjectDataPtr objData = sg->getObjectData(TEXTURE, SafeUIntFromPointer(buffer)); if (!objData.Ptr()) return EGL_NO_IMAGE_KHR; TextureData *texData = (TextureData *)objData.Ptr(); if(!texData->width || !texData->height) return EGL_NO_IMAGE_KHR; img->width = texData->width; img->height = texData->height; img->border = texData->border; img->internalFormat = texData->internalFormat; img->globalTexName = globalTexName; return dpy->addImageKHR(img); } } return EGL_NO_IMAGE_KHR; }
void GLEScontext::drawValidate(void) { if(m_framebuffer == 0) return; ObjectDataPtr fbObj = m_shareGroup->getObjectData(FRAMEBUFFER,m_framebuffer); if (fbObj.Ptr() == NULL) return; FramebufferData *fbData = (FramebufferData *)fbObj.Ptr(); fbData->validate(this); }