summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorTatenda Chipeperekwa <tatendac@codeaurora.org>2016-04-18 16:26:19 -0700
committerSteve Kondik <steve@cyngn.com>2016-07-31 14:28:55 -0700
commitf5486d6f47d4649b983f5c4f2a6f52706c27fd09 (patch)
treefb10cf1d3ccbda7c6d00b0d8d27e62fbbd75b1a2 /services
parent537364c7229cb7d5d63b4683a34e47db6aa013bd (diff)
downloadframeworks_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.cpp21
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