Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f5486d6f authored by Tatenda Chipeperekwa's avatar Tatenda Chipeperekwa Committed by Steve Kondik
Browse files

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
parent 537364c7
Loading
Loading
Loading
Loading
+18 −3
Original line number Diff line number Diff line
/* 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
    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