Frame EglManager::beginFrame(EGLSurface surface) { LOG_ALWAYS_FATAL_IF(surface == EGL_NO_SURFACE, "Tried to beginFrame on EGL_NO_SURFACE!"); makeCurrent(surface); Frame frame; frame.mSurface = surface; eglQuerySurface(mEglDisplay, surface, EGL_WIDTH, &frame.mWidth); eglQuerySurface(mEglDisplay, surface, EGL_HEIGHT, &frame.mHeight); frame.mBufferAge = queryBufferAge(surface); eglBeginFrame(mEglDisplay, surface); return frame; }
void EglManager::beginFrame(EGLSurface surface, EGLint* width, EGLint* height) { LOG_ALWAYS_FATAL_IF(surface == EGL_NO_SURFACE, "Tried to beginFrame on EGL_NO_SURFACE!"); makeCurrent(surface); if (width) { TIME_LOG("eglQuerySurface", eglQuerySurface(mEglDisplay, surface, EGL_WIDTH, width)); } if (height) { TIME_LOG("eglQuerySurface", eglQuerySurface(mEglDisplay, surface, EGL_HEIGHT, height)); } /// M: use basic because driver has added systrace for it nsecs_t duration; TIME_LOG_BASIC("eglBeginFrame", eglBeginFrame(mEglDisplay, surface), duration); }
static void android_view_HardwareRenderer_beginFrame(JNIEnv* env, jobject clazz, jintArray size) { EGLDisplay display = eglGetCurrentDisplay(); EGLSurface surface = eglGetCurrentSurface(EGL_DRAW); if (size) { EGLint value; jint* storage = env->GetIntArrayElements(size, NULL); eglQuerySurface(display, surface, EGL_WIDTH, &value); storage[0] = value; eglQuerySurface(display, surface, EGL_HEIGHT, &value); storage[1] = value; env->ReleaseIntArrayElements(size, storage, 0); } eglBeginFrame(display, surface); }