summaryrefslogtreecommitdiff
path: root/libs/hwui/renderthread/EglManager.cpp
diff options
context:
space:
mode:
authorStan Iliev <stani@google.com>2018-09-04 15:42:18 +0000
committerStan Iliev <stani@google.com>2018-09-04 15:42:18 +0000
commita683eb3945320f592f58705c3c31b3c044f4bd72 (patch)
tree0d52da520e423da3b41733d63f3be53ce0e31932 /libs/hwui/renderthread/EglManager.cpp
parent85f9096b5272c9a39e592e2e97cbbe6cb0e767ab (diff)
Revert "Revert "Revert "TextureView Vulkan support and optimized OpenGL draw"""
This reverts commit 85f9096b5272c9a39e592e2e97cbbe6cb0e767ab. Reason for revert: lensblur broken. Change-Id: I83ac163159fc537bc15936a0f8597a7512ca9d6e
Diffstat (limited to 'libs/hwui/renderthread/EglManager.cpp')
-rw-r--r--libs/hwui/renderthread/EglManager.cpp104
1 files changed, 0 insertions, 104 deletions
diff --git a/libs/hwui/renderthread/EglManager.cpp b/libs/hwui/renderthread/EglManager.cpp
index 5f8d7ad3373a..cd21822df5b1 100644
--- a/libs/hwui/renderthread/EglManager.cpp
+++ b/libs/hwui/renderthread/EglManager.cpp
@@ -18,7 +18,6 @@
#include <cutils/properties.h>
#include <log/log.h>
-#include <private/gui/SyncFeatures.h>
#include <utils/Trace.h>
#include "utils/StringUtils.h"
@@ -465,109 +464,6 @@ bool EglManager::setPreserveBuffer(EGLSurface surface, bool preserve) {
return preserved;
}
-status_t EglManager::fenceWait(sp<Fence>& fence) {
- if (!hasEglContext()) {
- ALOGE("EglManager::fenceWait: EGLDisplay not initialized");
- return INVALID_OPERATION;
- }
-
- if (SyncFeatures::getInstance().useWaitSync() &&
- SyncFeatures::getInstance().useNativeFenceSync()) {
- // Block GPU on the fence.
- // Create an EGLSyncKHR from the current fence.
- int fenceFd = fence->dup();
- if (fenceFd == -1) {
- ALOGE("EglManager::fenceWait: error dup'ing fence fd: %d", errno);
- return -errno;
- }
- EGLint attribs[] = {
- EGL_SYNC_NATIVE_FENCE_FD_ANDROID, fenceFd,
- EGL_NONE
- };
- EGLSyncKHR sync = eglCreateSyncKHR(mEglDisplay,
- EGL_SYNC_NATIVE_FENCE_ANDROID, attribs);
- if (sync == EGL_NO_SYNC_KHR) {
- close(fenceFd);
- ALOGE("EglManager::fenceWait: error creating EGL fence: %#x", eglGetError());
- return UNKNOWN_ERROR;
- }
-
- // XXX: The spec draft is inconsistent as to whether this should
- // return an EGLint or void. Ignore the return value for now, as
- // it's not strictly needed.
- eglWaitSyncKHR(mEglDisplay, sync, 0);
- EGLint eglErr = eglGetError();
- eglDestroySyncKHR(mEglDisplay, sync);
- if (eglErr != EGL_SUCCESS) {
- ALOGE("EglManager::fenceWait: error waiting for EGL fence: %#x", eglErr);
- return UNKNOWN_ERROR;
- }
- } else {
- // Block CPU on the fence.
- status_t err = fence->waitForever("EglManager::fenceWait");
- if (err != NO_ERROR) {
- ALOGE("EglManager::fenceWait: error waiting for fence: %d", err);
- return err;
- }
- }
- return OK;
-}
-
-status_t EglManager::createReleaseFence(bool useFenceSync, EGLSyncKHR* eglFence,
- sp<Fence>& nativeFence) {
- if (!hasEglContext()) {
- ALOGE("EglManager::createReleaseFence: EGLDisplay not initialized");
- return INVALID_OPERATION;
- }
-
- if (SyncFeatures::getInstance().useNativeFenceSync()) {
- EGLSyncKHR sync = eglCreateSyncKHR(mEglDisplay,
- EGL_SYNC_NATIVE_FENCE_ANDROID, nullptr);
- if (sync == EGL_NO_SYNC_KHR) {
- ALOGE("EglManager::createReleaseFence: error creating EGL fence: %#x",
- eglGetError());
- return UNKNOWN_ERROR;
- }
- glFlush();
- int fenceFd = eglDupNativeFenceFDANDROID(mEglDisplay, sync);
- eglDestroySyncKHR(mEglDisplay, sync);
- if (fenceFd == EGL_NO_NATIVE_FENCE_FD_ANDROID) {
- ALOGE("EglManager::createReleaseFence: error dup'ing native fence "
- "fd: %#x", eglGetError());
- return UNKNOWN_ERROR;
- }
- nativeFence = new Fence(fenceFd);
- *eglFence = EGL_NO_SYNC_KHR;
- } else if (useFenceSync && SyncFeatures::getInstance().useFenceSync()) {
- if (*eglFence != EGL_NO_SYNC_KHR) {
- // There is already a fence for the current slot. We need to
- // wait on that before replacing it with another fence to
- // ensure that all outstanding buffer accesses have completed
- // before the producer accesses it.
- EGLint result = eglClientWaitSyncKHR(mEglDisplay, *eglFence, 0, 1000000000);
- if (result == EGL_FALSE) {
- ALOGE("EglManager::createReleaseFence: error waiting for previous fence: %#x",
- eglGetError());
- return UNKNOWN_ERROR;
- } else if (result == EGL_TIMEOUT_EXPIRED_KHR) {
- ALOGE("EglManager::createReleaseFence: timeout waiting for previous fence");
- return TIMED_OUT;
- }
- eglDestroySyncKHR(mEglDisplay, *eglFence);
- }
-
- // Create a fence for the outstanding accesses in the current
- // OpenGL ES context.
- *eglFence = eglCreateSyncKHR(mEglDisplay, EGL_SYNC_FENCE_KHR, nullptr);
- if (*eglFence == EGL_NO_SYNC_KHR) {
- ALOGE("EglManager::createReleaseFence: error creating fence: %#x", eglGetError());
- return UNKNOWN_ERROR;
- }
- glFlush();
- }
- return OK;
-}
-
} /* namespace renderthread */
} /* namespace uirenderer */
} /* namespace android */