diff options
Diffstat (limited to 'platformdrmgeneric.cpp')
-rw-r--r-- | platformdrmgeneric.cpp | 27 |
1 files changed, 7 insertions, 20 deletions
diff --git a/platformdrmgeneric.cpp b/platformdrmgeneric.cpp index 2a6773c..7c4758d 100644 --- a/platformdrmgeneric.cpp +++ b/platformdrmgeneric.cpp @@ -24,10 +24,9 @@ #include <xf86drm.h> #include <xf86drmMode.h> -#include <cutils/log.h> +#include <log/log.h> #include <gralloc_handle.h> #include <hardware/gralloc.h> -#include <EGL/eglext.h> namespace android { @@ -84,22 +83,6 @@ uint32_t DrmGenericImporter::ConvertHalFormatToDrm(uint32_t hal_format) { } } -EGLImageKHR DrmGenericImporter::ImportImage(EGLDisplay egl_display, buffer_handle_t handle) { - gralloc_handle_t *gr_handle = gralloc_handle(handle); - if (!gr_handle) - return NULL; - EGLint attr[] = { - EGL_WIDTH, (EGLint)gr_handle->width, - EGL_HEIGHT, (EGLint)gr_handle->height, - EGL_LINUX_DRM_FOURCC_EXT, (EGLint)ConvertHalFormatToDrm(gr_handle->format), - EGL_DMA_BUF_PLANE0_FD_EXT, gr_handle->prime_fd, - EGL_DMA_BUF_PLANE0_OFFSET_EXT, 0, - EGL_DMA_BUF_PLANE0_PITCH_EXT, (EGLint)gr_handle->stride, - EGL_NONE, - }; - return eglCreateImageKHR(egl_display, EGL_NO_CONTEXT, EGL_LINUX_DMA_BUF_EXT, NULL, attr); -} - int DrmGenericImporter::ImportBuffer(buffer_handle_t handle, hwc_drm_bo_t *bo) { gralloc_handle_t *gr_handle = gralloc_handle(handle); if (!gr_handle) @@ -145,10 +128,14 @@ int DrmGenericImporter::ReleaseBuffer(hwc_drm_bo_t *bo) { gem_close.handle = bo->gem_handles[i]; int ret = drmIoctl(drm_->fd(), DRM_IOCTL_GEM_CLOSE, &gem_close); - if (ret) + if (ret) { ALOGE("Failed to close gem handle %d %d", i, ret); - else + } else { + for (int j = i + 1; j < num_gem_handles; j++) + if (bo->gem_handles[j] == bo->gem_handles[i]) + bo->gem_handles[j] = 0; bo->gem_handles[i] = 0; + } } return 0; } |