Loading services/surfaceflinger/DisplayHardware/FramebufferSurface.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -68,8 +68,8 @@ FramebufferSurface::FramebufferSurface(HWComposer& hwc) : mBufferQueue->setConsumerUsageBits(GRALLOC_USAGE_HW_FB | GRALLOC_USAGE_HW_RENDER | GRALLOC_USAGE_HW_COMPOSER); mBufferQueue->setDefaultBufferFormat(mHwc.getFormat(HWC_DISPLAY_PRIMARY)); mBufferQueue->setDefaultBufferSize(mHwc.getResolutionX(HWC_DISPLAY_PRIMARY), mHwc.getResolutionY(HWC_DISPLAY_PRIMARY)); mBufferQueue->setDefaultBufferSize(mHwc.getWidth(HWC_DISPLAY_PRIMARY), mHwc.getHeight(HWC_DISPLAY_PRIMARY)); mBufferQueue->setSynchronousMode(true); mBufferQueue->setDefaultMaxBufferCount(NUM_FRAME_BUFFERS); } Loading services/surfaceflinger/DisplayHardware/HWComposer.cpp +28 −18 Original line number Diff line number Diff line Loading @@ -162,8 +162,8 @@ HWComposer::HWComposer( "should only have fbdev if no hwc or hwc is 1.0"); DisplayData& disp(mDisplayData[HWC_DISPLAY_PRIMARY]); disp.xres = mFbDev->width; disp.yres = mFbDev->height; disp.width = mFbDev->width; disp.height = mFbDev->height; disp.format = mFbDev->format; disp.xdpi = mFbDev->xdpi; disp.ydpi = mFbDev->ydpi; Loading Loading @@ -297,8 +297,8 @@ void HWComposer::hotplug(int disp, int connected) { static const uint32_t DISPLAY_ATTRIBUTES[] = { HWC_DISPLAY_VSYNC_PERIOD, HWC_DISPLAY_RESOLUTION_X, HWC_DISPLAY_RESOLUTION_Y, HWC_DISPLAY_WIDTH, HWC_DISPLAY_HEIGHT, HWC_DISPLAY_DPI_X, HWC_DISPLAY_DPI_Y, HWC_DISPLAY_NO_ATTRIBUTE, Loading Loading @@ -330,11 +330,11 @@ void HWComposer::queryDisplayProperties(int disp) { case HWC_DISPLAY_VSYNC_PERIOD: mDisplayData[disp].refresh = nsecs_t(values[i]); break; case HWC_DISPLAY_RESOLUTION_X: mDisplayData[disp].xres = values[i]; case HWC_DISPLAY_WIDTH: mDisplayData[disp].width = values[i]; break; case HWC_DISPLAY_RESOLUTION_Y: mDisplayData[disp].yres = values[i]; case HWC_DISPLAY_HEIGHT: mDisplayData[disp].height = values[i]; break; case HWC_DISPLAY_DPI_X: mDisplayData[disp].xdpi = values[i] / 1000.0f; Loading Loading @@ -395,12 +395,12 @@ nsecs_t HWComposer::getRefreshTimestamp(int disp) const { return now - ((now - mLastHwVSync) % mDisplayData[disp].refresh); } uint32_t HWComposer::getResolutionX(int disp) const { return mDisplayData[disp].xres; uint32_t HWComposer::getWidth(int disp) const { return mDisplayData[disp].width; } uint32_t HWComposer::getResolutionY(int disp) const { return mDisplayData[disp].yres; uint32_t HWComposer::getHeight(int disp) const { return mDisplayData[disp].height; } uint32_t HWComposer::getFormat(int disp) const { Loading Loading @@ -446,9 +446,9 @@ status_t HWComposer::createWorkList(int32_t id, size_t numLayers) { disp.list = (hwc_display_contents_1_t*)malloc(size); disp.capacity = numLayers; } disp.list->retireFenceFd = -1; disp.list->flags = HWC_GEOMETRY_CHANGED; disp.list->numHwLayers = numLayers; disp.list->flipFenceFd = -1; } return NO_ERROR; } Loading @@ -457,10 +457,20 @@ status_t HWComposer::prepare() { for (size_t i=0 ; i<mNumDisplays ; i++) { mLists[i] = mDisplayData[i].list; if (mLists[i]) { if (hwcHasApiVersion(mHwc, HWC_DEVICE_API_VERSION_1_2)) { mLists[i]->outbuf = NULL; mLists[i]->outbufAcquireFenceFd = -1; } else if (hwcHasApiVersion(mHwc, HWC_DEVICE_API_VERSION_1_1)) { // garbage data to catch improper use mLists[i]->dpy = (hwc_display_t)0xDEADBEEF; mLists[i]->sur = (hwc_surface_t)0xDEADBEEF; } else { mLists[i]->dpy = EGL_NO_DISPLAY; mLists[i]->sur = EGL_NO_SURFACE; } } } int err = mHwc->prepare(mHwc, mNumDisplays, mLists); if (err == NO_ERROR) { // here we're just making sure that "skip" layers are set Loading Loading @@ -517,9 +527,9 @@ status_t HWComposer::commit() { for (size_t i=0 ; i<mNumDisplays ; i++) { DisplayData& disp(mDisplayData[i]); if (disp.list) { if (disp.list->flipFenceFd != -1) { close(disp.list->flipFenceFd); disp.list->flipFenceFd = -1; if (disp.list->retireFenceFd != -1) { close(disp.list->retireFenceFd); disp.list->retireFenceFd = -1; } disp.list->flags &= ~HWC_GEOMETRY_CHANGED; } Loading services/surfaceflinger/DisplayHardware/HWComposer.h +4 −4 Original line number Diff line number Diff line Loading @@ -216,8 +216,8 @@ public: // HWC_DISPLAY_PRIMARY). nsecs_t getRefreshPeriod(int disp) const; nsecs_t getRefreshTimestamp(int disp) const; uint32_t getResolutionX(int disp) const; uint32_t getResolutionY(int disp) const; uint32_t getWidth(int disp) const; uint32_t getHeight(int disp) const; uint32_t getFormat(int disp) const; float getDpiX(int disp) const; float getDpiY(int disp) const; Loading Loading @@ -272,8 +272,8 @@ private: ~DisplayData() { free(list); } uint32_t xres; uint32_t yres; uint32_t width; uint32_t height; uint32_t format; // pixel format from FB hal, for pre-hwc-1.1 float xdpi; float ydpi; Loading Loading
services/surfaceflinger/DisplayHardware/FramebufferSurface.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -68,8 +68,8 @@ FramebufferSurface::FramebufferSurface(HWComposer& hwc) : mBufferQueue->setConsumerUsageBits(GRALLOC_USAGE_HW_FB | GRALLOC_USAGE_HW_RENDER | GRALLOC_USAGE_HW_COMPOSER); mBufferQueue->setDefaultBufferFormat(mHwc.getFormat(HWC_DISPLAY_PRIMARY)); mBufferQueue->setDefaultBufferSize(mHwc.getResolutionX(HWC_DISPLAY_PRIMARY), mHwc.getResolutionY(HWC_DISPLAY_PRIMARY)); mBufferQueue->setDefaultBufferSize(mHwc.getWidth(HWC_DISPLAY_PRIMARY), mHwc.getHeight(HWC_DISPLAY_PRIMARY)); mBufferQueue->setSynchronousMode(true); mBufferQueue->setDefaultMaxBufferCount(NUM_FRAME_BUFFERS); } Loading
services/surfaceflinger/DisplayHardware/HWComposer.cpp +28 −18 Original line number Diff line number Diff line Loading @@ -162,8 +162,8 @@ HWComposer::HWComposer( "should only have fbdev if no hwc or hwc is 1.0"); DisplayData& disp(mDisplayData[HWC_DISPLAY_PRIMARY]); disp.xres = mFbDev->width; disp.yres = mFbDev->height; disp.width = mFbDev->width; disp.height = mFbDev->height; disp.format = mFbDev->format; disp.xdpi = mFbDev->xdpi; disp.ydpi = mFbDev->ydpi; Loading Loading @@ -297,8 +297,8 @@ void HWComposer::hotplug(int disp, int connected) { static const uint32_t DISPLAY_ATTRIBUTES[] = { HWC_DISPLAY_VSYNC_PERIOD, HWC_DISPLAY_RESOLUTION_X, HWC_DISPLAY_RESOLUTION_Y, HWC_DISPLAY_WIDTH, HWC_DISPLAY_HEIGHT, HWC_DISPLAY_DPI_X, HWC_DISPLAY_DPI_Y, HWC_DISPLAY_NO_ATTRIBUTE, Loading Loading @@ -330,11 +330,11 @@ void HWComposer::queryDisplayProperties(int disp) { case HWC_DISPLAY_VSYNC_PERIOD: mDisplayData[disp].refresh = nsecs_t(values[i]); break; case HWC_DISPLAY_RESOLUTION_X: mDisplayData[disp].xres = values[i]; case HWC_DISPLAY_WIDTH: mDisplayData[disp].width = values[i]; break; case HWC_DISPLAY_RESOLUTION_Y: mDisplayData[disp].yres = values[i]; case HWC_DISPLAY_HEIGHT: mDisplayData[disp].height = values[i]; break; case HWC_DISPLAY_DPI_X: mDisplayData[disp].xdpi = values[i] / 1000.0f; Loading Loading @@ -395,12 +395,12 @@ nsecs_t HWComposer::getRefreshTimestamp(int disp) const { return now - ((now - mLastHwVSync) % mDisplayData[disp].refresh); } uint32_t HWComposer::getResolutionX(int disp) const { return mDisplayData[disp].xres; uint32_t HWComposer::getWidth(int disp) const { return mDisplayData[disp].width; } uint32_t HWComposer::getResolutionY(int disp) const { return mDisplayData[disp].yres; uint32_t HWComposer::getHeight(int disp) const { return mDisplayData[disp].height; } uint32_t HWComposer::getFormat(int disp) const { Loading Loading @@ -446,9 +446,9 @@ status_t HWComposer::createWorkList(int32_t id, size_t numLayers) { disp.list = (hwc_display_contents_1_t*)malloc(size); disp.capacity = numLayers; } disp.list->retireFenceFd = -1; disp.list->flags = HWC_GEOMETRY_CHANGED; disp.list->numHwLayers = numLayers; disp.list->flipFenceFd = -1; } return NO_ERROR; } Loading @@ -457,10 +457,20 @@ status_t HWComposer::prepare() { for (size_t i=0 ; i<mNumDisplays ; i++) { mLists[i] = mDisplayData[i].list; if (mLists[i]) { if (hwcHasApiVersion(mHwc, HWC_DEVICE_API_VERSION_1_2)) { mLists[i]->outbuf = NULL; mLists[i]->outbufAcquireFenceFd = -1; } else if (hwcHasApiVersion(mHwc, HWC_DEVICE_API_VERSION_1_1)) { // garbage data to catch improper use mLists[i]->dpy = (hwc_display_t)0xDEADBEEF; mLists[i]->sur = (hwc_surface_t)0xDEADBEEF; } else { mLists[i]->dpy = EGL_NO_DISPLAY; mLists[i]->sur = EGL_NO_SURFACE; } } } int err = mHwc->prepare(mHwc, mNumDisplays, mLists); if (err == NO_ERROR) { // here we're just making sure that "skip" layers are set Loading Loading @@ -517,9 +527,9 @@ status_t HWComposer::commit() { for (size_t i=0 ; i<mNumDisplays ; i++) { DisplayData& disp(mDisplayData[i]); if (disp.list) { if (disp.list->flipFenceFd != -1) { close(disp.list->flipFenceFd); disp.list->flipFenceFd = -1; if (disp.list->retireFenceFd != -1) { close(disp.list->retireFenceFd); disp.list->retireFenceFd = -1; } disp.list->flags &= ~HWC_GEOMETRY_CHANGED; } Loading
services/surfaceflinger/DisplayHardware/HWComposer.h +4 −4 Original line number Diff line number Diff line Loading @@ -216,8 +216,8 @@ public: // HWC_DISPLAY_PRIMARY). nsecs_t getRefreshPeriod(int disp) const; nsecs_t getRefreshTimestamp(int disp) const; uint32_t getResolutionX(int disp) const; uint32_t getResolutionY(int disp) const; uint32_t getWidth(int disp) const; uint32_t getHeight(int disp) const; uint32_t getFormat(int disp) const; float getDpiX(int disp) const; float getDpiY(int disp) const; Loading Loading @@ -272,8 +272,8 @@ private: ~DisplayData() { free(list); } uint32_t xres; uint32_t yres; uint32_t width; uint32_t height; uint32_t format; // pixel format from FB hal, for pre-hwc-1.1 float xdpi; float ydpi; Loading