static bool check_global_image_egl_image(GLuint global_image_id[2], GLeglImageOES image, CLIENT_THREAD_STATE_T *thread, bool render) /* else texture */ { CLIENT_PROCESS_STATE_T *process = CLIENT_GET_PROCESS_STATE(); uint64_t id; uint32_t format, width, height; CLIENT_LOCK(); id = process->inited ? khrn_global_image_map_lookup(&process->global_image_egl_images, (uint32_t)(uintptr_t)image) : 0; CLIENT_UNLOCK(); if (!id) { return false; } global_image_id[0] = (GLuint)id; global_image_id[1] = (GLuint)(id >> 32); platform_get_global_image_info(global_image_id[0], global_image_id[1], &format, &width, &height); if (!(format & ((thread->opengl.context->type == OPENGL_ES_11) ? (render ? EGL_PIXEL_FORMAT_RENDER_GLES_BRCM : EGL_PIXEL_FORMAT_GLES_TEXTURE_BRCM) : (render ? EGL_PIXEL_FORMAT_RENDER_GLES2_BRCM : EGL_PIXEL_FORMAT_GLES2_TEXTURE_BRCM))) || (width == 0) || (height == 0)) { return false; } /* format and max width/height checks done on server */ return true; }
CLIENT_PROCESS_STATE_T *client_egl_get_process_state(CLIENT_THREAD_STATE_T *thread, EGLDisplay dpy, EGLBoolean check_inited) { if ((size_t)dpy == 1) { CLIENT_PROCESS_STATE_T *process = CLIENT_GET_PROCESS_STATE(); if (check_inited && !process->inited) { thread->error = EGL_NOT_INITIALIZED; return NULL; } else return process; } else { thread->error = EGL_BAD_DISPLAY; return NULL; } }