diff options
author | Tatenda Chipeperekwa <tatendac@codeaurora.org> | 2016-04-18 16:26:19 -0700 |
---|---|---|
committer | Steve Kondik <steve@cyngn.com> | 2016-07-31 14:28:55 -0700 |
commit | f5486d6f47d4649b983f5c4f2a6f52706c27fd09 (patch) | |
tree | fb10cf1d3ccbda7c6d00b0d8d27e62fbbd75b1a2 /services | |
parent | 537364c7229cb7d5d63b4683a34e47db6aa013bd (diff) | |
download | frameworks_native-f5486d6f47d4649b983f5c4f2a6f52706c27fd09.zip frameworks_native-f5486d6f47d4649b983f5c4f2a6f52706c27fd09.tar.gz frameworks_native-f5486d6f47d4649b983f5c4f2a6f52706c27fd09.tar.bz2 |
sf: Allow HWC composition of virtual displays for HDMI primary
Allow HWC composition of virtual displays for HDMI primary only
when the output pixel format of the HDMI display is RGB.
CRs-Fixed: 1007249
Change-Id: I9680b162d844e9e6397f919e8dcc1b1a948d182c
Diffstat (limited to 'services')
-rw-r--r-- | services/surfaceflinger/DisplayUtils.cpp | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/services/surfaceflinger/DisplayUtils.cpp b/services/surfaceflinger/DisplayUtils.cpp index a07e69e..abbb2d7 100644 --- a/services/surfaceflinger/DisplayUtils.cpp +++ b/services/surfaceflinger/DisplayUtils.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2015, The Linux Foundation. All rights reserved. +/* Copyright (c) 2015 - 2016, The Linux Foundation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are @@ -45,6 +45,8 @@ #include <ExSurfaceFlinger/ExHWComposer.h> #include <ExSurfaceFlinger/ExVirtualDisplaySurface.h> #include <gralloc_priv.h> +#include <qd_utils.h> +#include <display_config.h> #endif #include <dlfcn.h> #include <cutils/properties.h> @@ -176,8 +178,21 @@ bool DisplayUtils::canAllocateHwcDisplayIdForVDS(int usage) { #ifdef QTI_BSP #ifdef FORCE_HWC_COPY_FOR_VIRTUAL_DISPLAYS - // Reserve hardware acceleration for WFD use-case - flag_mask = GRALLOC_USAGE_PRIVATE_WFD; + int hdmi_node = qdutils::getHDMINode(); + if(hdmi_node == HWC_DISPLAY_PRIMARY) { + int active_config = qdutils::getActiveConfig(HWC_DISPLAY_PRIMARY); + if(active_config >= 0) { + qdutils::DisplayAttributes attr = qdutils::getDisplayAttributes(active_config, + HWC_DISPLAY_PRIMARY); + if(!attr.is_yuv) { + // Reserve hardware acceleration for WFD use-case + flag_mask = GRALLOC_USAGE_PRIVATE_WFD; + } + } + } else { + // Reserve hardware acceleration for WFD use-case + flag_mask = GRALLOC_USAGE_PRIVATE_WFD; + } #else // Don't allocate HWC display unless we force HWC copy, otherwise // incompatible buffers are sent to the media stack |