From patchwork Wed Jan 10 06:05:41 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Stultz X-Patchwork-Id: 124014 Delivered-To: patches@linaro.org Received: by 10.140.22.227 with SMTP id 90csp4884373qgn; Tue, 9 Jan 2018 22:05:54 -0800 (PST) X-Received: by 10.98.64.219 with SMTP id f88mr16108005pfd.197.1515564354844; Tue, 09 Jan 2018 22:05:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1515564354; cv=none; d=google.com; s=arc-20160816; b=uaDxWTtSXSFdOZwTk6r+fLmHrXKsPBRNhN1qkx38lz4PSDzn3jN1mk/BrRrzU+qaPZ u3jyP2XxotvnpiSUspptikrzboDYscT8/qSxm0TSX6mnYkzZjnIyFPArOAshZrtxafxB 1Ue8ToLuPPevFq4y8HFuV+RjpFk3q+fZUpN2TEkDmjR9lhdZioFVA8VFT8F0cRTFKSAV kjCLnTZhdOak8j3eUXFGny0KOUbYD3vhAua7/DnEZgVPnUKheEM41Any2K9d8HT0RqFL rU2C2zrs+YtGk8WbEQreiqvFj7EWCu8oC+zwEGcPGsLIVgLu9z40de9yTNbrJdmbIhdZ jHGA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:arc-authentication-results; bh=7aQ7ZT/kzFtdbQcbOcz3Nr5RReLTPtiEetYq6eLN9+s=; b=K+g6/bNtKvZurvhHuN1GkqdJ0lA8d7O/Jb+C0TMSbDzkfbfp/JEXgIETpLD4LdQ577 I7YwiLqX8KP7S3WzWDtBky35cLV/IsNfNCTTKfHq6YhmXG0nBV8gnphqL6wEmE+zlOK9 dsy6HV3bwlF/FOOQ3/tsipcopSPgJYmc/fhHCiywjmy8W9FNTPECm07K3RwWgIJv0+jp /qLcosAgHO/2yX6+Q9Yez1df5vow6qXVZkfExsXvaynZK+T/fpU99+y5uZ1H1arUTQyr Sy57bI5v4XziDfq0/Ph8/GajaDPZId8845wOVjkDk4KaPysFXc5M8j/Kj95hylu16zrF HOAw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=jO98w1HO; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id v24sor4055994pfi.142.2018.01.09.22.05.54 for (Google Transport Security); Tue, 09 Jan 2018 22:05:54 -0800 (PST) Received-SPF: pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=jO98w1HO; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=7aQ7ZT/kzFtdbQcbOcz3Nr5RReLTPtiEetYq6eLN9+s=; b=jO98w1HO5pBfBJuPewhmh0WTrx0oFmkTZaIt/pSAb3dqmA4t0ruYsAxKeaO/2pN1jT LAJW5F+A9RCt4iWy0i07wzlV4CaBAXNRQdc9KPx9iUwHIqXSn4orXnske6ufifFSioIa W8Vs75PJNAnjMzsTbqwIbml3qa42xdpqKIejM= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=7aQ7ZT/kzFtdbQcbOcz3Nr5RReLTPtiEetYq6eLN9+s=; b=Q4Rrsn+u7oMik/692YHbXEI2l1IlAPmwQQufm/DkXnsmonpyavDiYu97K/Vm4NfFf5 ca5o6zhVL0omWelo+p27tDuLkuMZNuIdGx2aG0K67r/jlCbmDrp2fdYEayCAGg5CnpZI ThswmOtIquxNEUR12UIuPCIpIPeN7OEnHLa7Y++42INrbw2OJwyqkkX/DgwJTv2FSj9i CWzGp2QyHmZopFUKPxGnONQbF3LEdsK30WiejTgEc97NfcghqhnanKBwq4pO87p2WXM7 zHxVncodSGYmfgow32/FR3lqt/tHSspDyCjDt20R6yM2esK1JUxI8owKt9Ivmxb2S0tv H8fQ== X-Gm-Message-State: AKGB3mKcORSXEzkRbgpSQamvirJyfM2uzCNVDM4Z3EukLEvBX5z7jUVt JSbR3yEL9mr3KB+z+PwtRBaG1jOJk095/Q== X-Google-Smtp-Source: ACJfBosJcyxVumyogBeb+OeNy9SP6gnT+Q8PTEg8Q+3qLWy12mY1YkPwxY3qlVI6JToI9Gzg3zqMdA== X-Received: by 10.98.90.195 with SMTP id o186mr15930629pfb.121.1515564354448; Tue, 09 Jan 2018 22:05:54 -0800 (PST) Return-Path: Received: from localhost.localdomain ([2601:1c2:600:5100:4e72:b9ff:fe99:466a]) by smtp.gmail.com with ESMTPSA id g8sm25538595pgs.55.2018.01.09.22.05.52 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 09 Jan 2018 22:05:53 -0800 (PST) From: John Stultz To: dri-devel@lists.freedesktop.org Cc: Rob Herring , Marissa Wall , Sean Paul , Dmitry Shmidt , Robert Foss , Matt Szczesiak , Liviu Dudau , David Hanna , John Stultz Subject: [RFC][PATCH 1/5] drm_hwcomposer: provide a common gralloc handle definition Date: Tue, 9 Jan 2018 22:05:41 -0800 Message-Id: <1515564345-1339-2-git-send-email-john.stultz@linaro.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1515564345-1339-1-git-send-email-john.stultz@linaro.org> References: <1515564345-1339-1-git-send-email-john.stultz@linaro.org> From: Rob Herring EGL, gralloc, and HWC must all have a common definition of fd's and int's in native_handle_t to share the fd and width, height, format, etc. of a dmabuf. Move the definition into HWC so we aren't dependent on a specific gralloc implementation and so we don't have to create an importer just for different native_handle_t layouts. This will allow supporting multiple gralloc implementations that conform to this layout. For now, this is aligned with gbm_gralloc's struct. Once we change gbm_gralloc and mesa to point to this copy, we can make modifications to the struct. Change-Id: I0e0e9994c7a13e6c47f00a70d13cd2ef9b1543d3 Cc: Marissa Wall Cc: Sean Paul Cc: Dmitry Shmidt Cc: Robert Foss Cc: Matt Szczesiak Cc: Liviu Dudau Cc: David Hanna Signed-off-by: Rob Herring [jstultz: This patch is important to be able to build AOSP without having to include the gbm_gralloc project.] Signed-off-by: John Stultz --- Android.mk | 1 - gralloc_drm_handle.h | 87 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 87 insertions(+), 1 deletion(-) create mode 100644 gralloc_drm_handle.h -- 2.7.4 diff --git a/Android.mk b/Android.mk index 8b11e37..ee5b8bf 100644 --- a/Android.mk +++ b/Android.mk @@ -47,7 +47,6 @@ LOCAL_SHARED_LIBRARIES := \ LOCAL_STATIC_LIBRARIES := libdrmhwc_utils LOCAL_C_INCLUDES := \ - external/drm_gralloc \ system/core/libsync LOCAL_SRC_FILES := \ diff --git a/gralloc_drm_handle.h b/gralloc_drm_handle.h new file mode 100644 index 0000000..e2f35dd --- /dev/null +++ b/gralloc_drm_handle.h @@ -0,0 +1,87 @@ +/* + * Copyright (C) 2010-2011 Chia-I Wu + * Copyright (C) 2010-2011 LunarG Inc. + * Copyright (C) 2016-2017 Linaro, Ltd., Rob Herring + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#ifndef _GRALLOC_DRM_HANDLE_H_ +#define _GRALLOC_DRM_HANDLE_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct gralloc_drm_handle_t { + native_handle_t base; + + /* file descriptors */ + int prime_fd; + + /* integers */ + int magic; + + int width; + int height; + int format; + int usage; + + int name; /* the name of the bo */ + int stride; /* the stride in bytes */ + int data_owner; /* owner of data (for validation) */ + + uint64_t modifier __attribute__((aligned(8))); /* buffer modifiers */ + union { + void *data; /* private pointer for gralloc */ + uint64_t reserved; + } __attribute__((aligned(8))); +}; +#define GRALLOC_HANDLE_MAGIC 0x5f47424d +#define GRALLOC_HANDLE_NUM_FDS 1 +#define GRALLOC_HANDLE_NUM_INTS ( \ + ((sizeof(struct gralloc_drm_handle_t) - sizeof(native_handle_t))/sizeof(int)) \ + - GRALLOC_HANDLE_NUM_FDS) + +static inline struct gralloc_drm_handle_t *gralloc_drm_handle(buffer_handle_t _handle) +{ + struct gralloc_drm_handle_t *handle = + (struct gralloc_drm_handle_t *) _handle; + + if (handle && (handle->base.version != sizeof(handle->base) || + handle->base.numInts != GRALLOC_HANDLE_NUM_INTS || + handle->base.numFds != GRALLOC_HANDLE_NUM_FDS || + handle->magic != GRALLOC_HANDLE_MAGIC)) + return NULL; + + return handle; +} + +static inline int gralloc_drm_get_prime_fd(buffer_handle_t _handle) +{ + struct gralloc_drm_handle_t *handle = gralloc_drm_handle(_handle); + return (handle) ? handle->prime_fd : -1; +} + +#ifdef __cplusplus +} +#endif +#endif /* _GRALLOC_DRM_HANDLE_H_ */ From patchwork Wed Jan 10 06:05:42 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Stultz X-Patchwork-Id: 124015 Delivered-To: patches@linaro.org Received: by 10.140.22.227 with SMTP id 90csp4884417qgn; Tue, 9 Jan 2018 22:05:56 -0800 (PST) X-Received: by 10.84.129.226 with SMTP id b89mr3908437plb.389.1515564356886; Tue, 09 Jan 2018 22:05:56 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1515564356; cv=none; d=google.com; s=arc-20160816; b=Y0jULf36TShu549TUtU8ff/u1NywFT32BtzpB1gYbm+bDQloJ+oTJEVouwmALgn76Q wm6yAQ/dZxqkRI430OxCX7VECX5a4WKg00eTrv01y+/aw7LeZvdrKHbpzAKmiD7RWbZG dgn/44KLq0UG772Vs+JFSh2Yjr6bXs1qwZipGdK2qNNGq3+DmZwfZihCCKYFVf6d7ZzW h5LoQysISgogDl/gTZts0e090nd6XPKJ/cevy6xrjs1cquqBGqr4+AMg6DsknPE/DQN1 Nbw6yqou1Xx8CMOFteOOtmREfWE9Izc12XOQW+n7opqaX5jCNb8RlUfRpGjHtX1WtHwt fMeQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:arc-authentication-results; bh=tU/oQWpnnXX79FVyBTFU3aSO/+hPM+VT530RADnKzDg=; b=aB3P1X/g+3CCBeHXY5hJAKw3ieXsWcHE2tbi8OnYNZ+cA3kXngG4qoYT4uh9z9+qfq 3M3LqT/MwSg1GHQ9yD3R+j6ZdqyPQVZI6cNWjFi/PQ/l9djDDfWkEcjV0/GUoxxMIGVA 2Ha+69bAx/LXUmm0mCff62puiP/dZrlO4wJpjnwcESNOjk8+qF/fL4csgpPk05zDoSSv O8XsbUNuCifodsunTK7ppYO4qPmCgA4Av1cqc06zZUaXCZn66K23yvijeoDBegkDFm56 u4Yi4+PhYLBfC9akIesz/RFqogkmQHwAkPW5ZxY44b3flD7s9Vra0LBMGlV0NHFdWpBO XHQg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=HT7aW32i; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id c22sor4114590pfj.17.2018.01.09.22.05.56 for (Google Transport Security); Tue, 09 Jan 2018 22:05:56 -0800 (PST) Received-SPF: pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=HT7aW32i; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=tU/oQWpnnXX79FVyBTFU3aSO/+hPM+VT530RADnKzDg=; b=HT7aW32ifaUhNbUdh1EpeG+gI9kS2/MQQ1spUl/XVHRLpA3pgA04M2ySy1O1y+TDM0 wMAMseC9I/t2/MHB20zfR2sDGvPWFzYcMXNtDXmvDz6JVJ93ntA7DipiZKWtkqPbQZn0 lvUizLRnYUKTSYo13rVDTo6CWESGoKP+I9L44= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=tU/oQWpnnXX79FVyBTFU3aSO/+hPM+VT530RADnKzDg=; b=ggL9KTWT/HzSnRyP4bxiUAzUS7LAkeu7W7IGaVrnGiwDHnC55vbOQMd5BEne1Io96y q7dfhmEayfzKCse1JA72ZodkL0S8AHQeqUhHpNhYmgfi3Xy09NQOHj3IPwdOWBCQDuJj VS+n3Gl8h6JUkJeB5kmTNhVWNM0hpnxDTxh8sdGHbhRs+KrXQSo2Q3hZbKZkzRwcVA3r bpeRtjPl+nI7VOyzsL0cq1WdZxXX/38e2zPFWnIZGIPVbVRujAciI81KvKLkXIKWFpW0 c9bg31xB7dLGA18FU1ae2J5d6syrUQOBUlabitlw7bw28FuV3o0AsMnLkaCCea5HMW0m 6o2g== X-Gm-Message-State: AKwxytdSqFfr2QEiw8pVMinn9hr7ypRS8OS9xQj1qjhFzzPGMstSH5xy Z/nTetioCYVp9kL6IvjzhWm5JJfb X-Google-Smtp-Source: ACJfBot/837xc13lrmrxJjCOgOrIIv38JxBMCid8Q8WL1tQVgZiRhdizebHw97pim6GxHvxHYFlPMA== X-Received: by 10.98.103.209 with SMTP id t78mr4142620pfj.53.1515564356502; Tue, 09 Jan 2018 22:05:56 -0800 (PST) Return-Path: Received: from localhost.localdomain ([2601:1c2:600:5100:4e72:b9ff:fe99:466a]) by smtp.gmail.com with ESMTPSA id g8sm25538595pgs.55.2018.01.09.22.05.54 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 09 Jan 2018 22:05:55 -0800 (PST) From: John Stultz To: dri-devel@lists.freedesktop.org Cc: John Stultz , Marissa Wall , Sean Paul , Dmitry Shmidt , Robert Foss , Matt Szczesiak , Liviu Dudau , David Hanna , Rob Herring Subject: [RFC][PATCH 2/5] drm_hwcomposer: glworker: Add build time options for certain shader feature names Date: Tue, 9 Jan 2018 22:05:42 -0800 Message-Id: <1515564345-1339-3-git-send-email-john.stultz@linaro.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1515564345-1339-1-git-send-email-john.stultz@linaro.org> References: <1515564345-1339-1-git-send-email-john.stultz@linaro.org> In order to get the hikey960, which uses the mali bifrost driver working with drm_hwcomposer, its needed to tweak some extension and funciton names used in the shaders. Specifically: * GL_OES_EGL_image_external_essl3 instead of GL_OES_EGL_image_external * texture() instead of texture2D() Which is configured using a build time definition. Credit to Matt Szczesiak for suggesting these changes to get hikey960 working! I'm a bit new to all this, and I expect there may be a better way to do this, so I'd love any feedback or comments! Change-Id: I2c8f08341ad086479b66241b903c79b00f2a0feb Cc: Marissa Wall Cc: Sean Paul Cc: Dmitry Shmidt Cc: Robert Foss Cc: Matt Szczesiak Cc: Liviu Dudau Cc: David Hanna Cc: Rob Herring Signed-off-by: John Stutlz --- glworker.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) -- 2.7.4 diff --git a/glworker.cpp b/glworker.cpp index ca726bf..c35d1b6 100644 --- a/glworker.cpp +++ b/glworker.cpp @@ -41,6 +41,17 @@ #define MAX_OVERLAPPING_LAYERS 64 +#ifdef USE_TEXTURE_FN + #define TEXTURE_STR "texture" +#else + #define TEXTURE_STR "texture2D" +#endif + +#ifdef USE_IMAGE_EXTERNAL_ESSL3 + #define IMAGE_EXTERNAL_STR "GL_OES_EGL_image_external_essl3" +#else + #define IMAGE_EXTERNAL_STR "GL_OES_EGL_image_external" +#endif namespace android { // clang-format off @@ -237,7 +248,7 @@ static std::string GenerateFragmentShader(int layer_count) { std::ostringstream fragment_shader_stream; fragment_shader_stream << "#version 300 es\n" << "#define LAYER_COUNT " << layer_count << "\n" - << "#extension GL_OES_EGL_image_external : require\n" + << "#extension " << IMAGE_EXTERNAL_STR << " : require\n" << "precision mediump float;\n"; for (int i = 0; i < layer_count; ++i) { fragment_shader_stream << "uniform samplerExternalOES uLayerTexture" << i @@ -257,7 +268,7 @@ static std::string GenerateFragmentShader(int layer_count) { fragment_shader_stream << " if (alphaCover > 0.5/255.0) {\n"; // clang-format off fragment_shader_stream - << " texSample = texture2D(uLayerTexture" << i << ",\n" + << " texSample = " << TEXTURE_STR << "(uLayerTexture" << i << ",\n" << " fTexCoords[" << i << "]);\n" << " multRgb = texSample.rgb *\n" << " max(texSample.a, uLayerPremult[" << i << "]);\n" From patchwork Wed Jan 10 06:05:43 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Stultz X-Patchwork-Id: 124016 Delivered-To: patches@linaro.org Received: by 10.140.22.227 with SMTP id 90csp4884437qgn; Tue, 9 Jan 2018 22:05:58 -0800 (PST) X-Received: by 10.101.96.200 with SMTP id r8mr14355907pgv.341.1515564358723; Tue, 09 Jan 2018 22:05:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1515564358; cv=none; d=google.com; s=arc-20160816; b=yz+cqJjW5R6wS6QH+CaOYuk0INpu56pKj+wR0TgNC2tMcEMkxb6IxjGGCEtNjgWAeg uGK4nr4Ir7uiL9YNpM8EF65a9tFPjrDSXbLfET0gJHGjqybkjlz1BJOXgdGGPUN0D3ee rRVv8MV5AEwhdVcLlI2b+MxpodThdVEzygFJHWEgK+qmHbe05/GkXiumkRVCU8/jQyhQ gFQVPD6XjukLM/Qr1pCCSX/aXWOt0fj35QjZ9MF9VsnU/aFsw7ew6D46PhC+sxaSklEC xEGzBIiXZ/h4r2m6rTWw6xK1f/t6zAPX4bQ6X/iLqcEvx/LwYVqc8D6FspJcxWqIB5Pz fM+Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:arc-authentication-results; bh=b6KdaN9zWxoAs9UWXRXJ27IqDb0oKiQ420laKoBNPyA=; b=zsMKAfX13yE0d6Zk64eP1aKH9hKNSvQfk6j9UfSAv+WVABHZjY/pcbkZReh4/TAh98 NiYYjJpHy94yqK/RugANN170XA/Y070oj0p88JRBzRln1HdzRFfmHRuLj65HRu1RHQLO 0TIc77eUViMwRbz69AL7gNdNRLe9KyLZmNlqXEZpo5AI8JpIa7HmeXQhlzJ1x0LY66hy S9hi9rr/NUgNXCgjYw8GVv51vuz/Qc07uhCQll7lDb/8nSwGPdwGUgPoXS3ZVxHc9kMi SWc+3ufLQA+nzxm3UNpmWMV6/zITeN+GzPARap1lU+4F+sqXltM/oOkC018Dr6cQPDiM mrhg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=bcwNgpR/; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id u188sor3738038pfb.138.2018.01.09.22.05.58 for (Google Transport Security); Tue, 09 Jan 2018 22:05:58 -0800 (PST) Received-SPF: pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=bcwNgpR/; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=b6KdaN9zWxoAs9UWXRXJ27IqDb0oKiQ420laKoBNPyA=; b=bcwNgpR/thek0/ya7rh76z66qgTLqDAlDhB6avwM2fGq/GIwOXU4RWKP+XJ++rSSlW wSwbW4L2CUhzhPUPST1Tyg1S9LWlrbFacFTMsNNvkVvxKobXJ04jXvfPSesTcGel8S0O 215Xl1F2CeuU1xNczgsRjaoReFUWBhlMxrwjM= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=b6KdaN9zWxoAs9UWXRXJ27IqDb0oKiQ420laKoBNPyA=; b=LT5NqyWn6pfuaezr98sJPX0fFC2YrdGm4nCuly9yX3KxiIfWQu8MnB/kF1jJQky0k5 SmQP5QIJc62iBwmspV1HEcGKZlQ5MVH3CsYuRNZnsJZbafXEcsxsU9ZYxsd9G4ANY59Y LvwCuUHnSIX3WBNeiiBa/t+Qj+QegDqo/3lPyJIa0GPubeLUqM+6Zzi5yRX1oqMT8nMG LtDGp39gypmB+BG5bsYQA4OQ6aFV2NkZ7/raAMGs0D3LKF5uU+78WMc03q4V2eRJYxT7 mQndY7LdaMmyvIg94RmRPyvu1Y5SDa5ZAHW5t/690BT2+wOBqG5fd0Znc/REIatH/HVo YGbw== X-Gm-Message-State: AKGB3mJLqZDCqMnAn6cmHIftR+RoVG1gmdRsZCngMZ28tLvfmDQ6RdsU /sSfljbJDHD1h+ewXER5n4gS8RuU X-Google-Smtp-Source: ACJfBovQn+IK2VdBMeoOTW7E5MO5uVz0I3xISvMoGInDvZJSo+WE+rn1DTQk65gDkTI82WDCDrS1Qg== X-Received: by 10.98.147.195 with SMTP id r64mr9471240pfk.83.1515564358293; Tue, 09 Jan 2018 22:05:58 -0800 (PST) Return-Path: Received: from localhost.localdomain ([2601:1c2:600:5100:4e72:b9ff:fe99:466a]) by smtp.gmail.com with ESMTPSA id g8sm25538595pgs.55.2018.01.09.22.05.56 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 09 Jan 2018 22:05:57 -0800 (PST) From: John Stultz To: dri-devel@lists.freedesktop.org Cc: John Stultz , Marissa Wall , Sean Paul , Dmitry Shmidt , Robert Foss , Matt Szczesiak , Liviu Dudau , David Hanna , Rob Herring Subject: [RFC][PATCH 3/5] drm_hwcomposer: Add platformhisi buffer importer for hikey and hikey960 Date: Tue, 9 Jan 2018 22:05:43 -0800 Message-Id: <1515564345-1339-4-git-send-email-john.stultz@linaro.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1515564345-1339-1-git-send-email-john.stultz@linaro.org> References: <1515564345-1339-1-git-send-email-john.stultz@linaro.org> This allows for importing buffers allocated from the hikey and hikey960 gralloc implelementations. Change-Id: I81abdd4d1dc7d9f2ef31078c91679b532d3262fd Cc: Marissa Wall Cc: Sean Paul Cc: Dmitry Shmidt Cc: Robert Foss Cc: Matt Szczesiak Cc: Liviu Dudau Cc: David Hanna Cc: Rob Herring Signed-off-by: John Stultz --- Android.mk | 12 ++++ platformhisi.cpp | 200 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ platformhisi.h | 50 ++++++++++++++ 3 files changed, 262 insertions(+) create mode 100644 platformhisi.cpp create mode 100644 platformhisi.h -- 2.7.4 diff --git a/Android.mk b/Android.mk index ee5b8bf..caafce1 100644 --- a/Android.mk +++ b/Android.mk @@ -66,6 +66,7 @@ LOCAL_SRC_FILES := \ hwcutils.cpp \ platform.cpp \ platformdrmgeneric.cpp \ + platformhisi.cpp \ separate_rects.cpp \ virtualcompositorworker.cpp \ vsyncworker.cpp @@ -74,7 +75,18 @@ LOCAL_CPPFLAGS += \ -DHWC2_USE_CPP11 \ -DHWC2_INCLUDE_STRINGIFICATION + +ifeq ($(TARGET_PRODUCT),hikey960) +LOCAL_CPPFLAGS += -DUSE_HISI_IMPORTER -DUSE_IMAGE_EXTERNAL_ESSL3 -DUSE_TEXTURE_FN +LOCAL_C_INCLUDES += device/linaro/hikey/gralloc960/ +else +ifeq ($(TARGET_PRODUCT),hikey) +LOCAL_CPPFLAGS += -DUSE_HISI_IMPORTER -DHIKEY +LOCAL_C_INCLUDES += device/linaro/hikey/gralloc/ +else LOCAL_CPPFLAGS += -DUSE_DRM_GENERIC_IMPORTER +endif +endif LOCAL_MODULE := hwcomposer.drm LOCAL_MODULE_TAGS := optional diff --git a/platformhisi.cpp b/platformhisi.cpp new file mode 100644 index 0000000..123c8f2 --- /dev/null +++ b/platformhisi.cpp @@ -0,0 +1,200 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#define LOG_TAG "hwc-platform-hisi" + +#include "drmresources.h" +#include "platform.h" +#include "platformhisi.h" + + +#include +#include +#include +#include +#include + +#include +#include +#include "gralloc_priv.h" + + +namespace android { + +#ifdef USE_HISI_IMPORTER +// static +Importer *Importer::CreateInstance(DrmResources *drm) { + HisiImporter *importer = new HisiImporter(drm); + if (!importer) + return NULL; + + int ret = importer->Init(); + if (ret) { + ALOGE("Failed to initialize the hisi importer %d", ret); + delete importer; + return NULL; + } + return importer; +} +#endif + +HisiImporter::HisiImporter(DrmResources *drm) : drm_(drm) { +} + +HisiImporter::~HisiImporter() { +} + +int HisiImporter::Init() { + int ret = hw_get_module(GRALLOC_HARDWARE_MODULE_ID, + (const hw_module_t **)&gralloc_); + if (ret) { + ALOGE("Failed to open gralloc module %d", ret); + return ret; + } + + if (strcasecmp(gralloc_->common.author, "NVIDIA")) + ALOGW("Using non-NVIDIA gralloc module: %s/%s\n", gralloc_->common.name, + gralloc_->common.author); + + return 0; +} + +#ifdef HIKEY +uint32_t HisiImporter::ConvertHalFormatToDrm(uint32_t hal_format) { + switch (hal_format) { + case HAL_PIXEL_FORMAT_RGB_888: + return DRM_FORMAT_BGR888; + case HAL_PIXEL_FORMAT_BGRA_8888: + return DRM_FORMAT_ARGB8888; + case HAL_PIXEL_FORMAT_RGBX_8888: + return DRM_FORMAT_XBGR8888; + case HAL_PIXEL_FORMAT_RGBA_8888: + return DRM_FORMAT_ABGR8888; + case HAL_PIXEL_FORMAT_RGB_565: + return DRM_FORMAT_BGR565; + case HAL_PIXEL_FORMAT_YV12: + return DRM_FORMAT_YVU420; + default: + ALOGE("Cannot convert hal format to drm format %u", hal_format); + return -EINVAL; + } +} +#else /* HIKEY960 case*/ +uint32_t HisiImporter::ConvertHalFormatToDrm(uint32_t hal_format) { + switch (hal_format) { + case HAL_PIXEL_FORMAT_RGB_888: + return DRM_FORMAT_BGR888; + case HAL_PIXEL_FORMAT_BGRA_8888: + return DRM_FORMAT_XBGR8888; + case HAL_PIXEL_FORMAT_RGBX_8888: + return DRM_FORMAT_XBGR8888; + case HAL_PIXEL_FORMAT_RGBA_8888: + return DRM_FORMAT_XBGR8888; + case HAL_PIXEL_FORMAT_RGB_565: + return DRM_FORMAT_BGR565; + case HAL_PIXEL_FORMAT_YV12: + return DRM_FORMAT_YVU420; + default: + ALOGE("Cannot convert hal format to drm format %u", hal_format); + return -EINVAL; + } +} +#endif /* HIKEY */ + +EGLImageKHR HisiImporter::ImportImage(EGLDisplay egl_display, buffer_handle_t handle) { + private_handle_t const *hnd = reinterpret_cast < private_handle_t const *>(handle); + if (!hnd) + return NULL; + EGLint attr[] = { + EGL_WIDTH, hnd->width, + EGL_HEIGHT, hnd->height, + EGL_LINUX_DRM_FOURCC_EXT, (EGLint)ConvertHalFormatToDrm(hnd->req_format), + EGL_DMA_BUF_PLANE0_FD_EXT, hnd->share_fd, + EGL_DMA_BUF_PLANE0_OFFSET_EXT, 0, + EGL_DMA_BUF_PLANE0_PITCH_EXT, hnd->byte_stride, + EGL_NONE, + }; + return eglCreateImageKHR(egl_display, EGL_NO_CONTEXT, EGL_LINUX_DMA_BUF_EXT, NULL, attr); +} + +int HisiImporter::ImportBuffer(buffer_handle_t handle, hwc_drm_bo_t *bo) { + private_handle_t const *hnd = reinterpret_cast < private_handle_t const *>(handle); + if (!hnd) + return -EINVAL; + + uint32_t gem_handle; + int ret = drmPrimeFDToHandle(drm_->fd(), hnd->share_fd, &gem_handle); + if (ret) { + ALOGE("failed to import prime fd %d ret=%d", hnd->share_fd, ret); + return ret; + } + + memset(bo, 0, sizeof(hwc_drm_bo_t)); + bo->width = hnd->width; + bo->height = hnd->height; + bo->format = ConvertHalFormatToDrm(hnd->req_format); + bo->usage = hnd->usage; +#ifdef HIKEY + bo->pitches[0] = hnd->width * 4; +#else + bo->pitches[0] = hnd->byte_stride; +#endif + bo->gem_handles[0] = gem_handle; + bo->offsets[0] = 0; + + ret = drmModeAddFB2(drm_->fd(), bo->width, bo->height, bo->format, + bo->gem_handles, bo->pitches, bo->offsets, &bo->fb_id, 0); + if (ret) { + ALOGE("could not create drm fb %d", ret); + return ret; + } + + return ret; +} + +int HisiImporter::ReleaseBuffer(hwc_drm_bo_t *bo) { + if (bo->fb_id) + if (drmModeRmFB(drm_->fd(), bo->fb_id)) + ALOGE("Failed to rm fb"); + + struct drm_gem_close gem_close; + memset(&gem_close, 0, sizeof(gem_close)); + int num_gem_handles = sizeof(bo->gem_handles) / sizeof(bo->gem_handles[0]); + for (int i = 0; i < num_gem_handles; i++) { + if (!bo->gem_handles[i]) + continue; + + gem_close.handle = bo->gem_handles[i]; + int ret = drmIoctl(drm_->fd(), DRM_IOCTL_GEM_CLOSE, &gem_close); + if (ret) + ALOGE("Failed to close gem handle %d %d", i, ret); + else + bo->gem_handles[i] = 0; + } + return 0; +} + +#ifdef USE_HISI_IMPORTER +std::unique_ptr Planner::CreateInstance(DrmResources *) { + std::unique_ptr planner(new Planner); + planner->AddStage(); + return planner; +} +#endif + +} + + diff --git a/platformhisi.h b/platformhisi.h new file mode 100644 index 0000000..f7a7d8c --- /dev/null +++ b/platformhisi.h @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef ANDROID_PLATFORM_HISI_H_ +#define ANDROID_PLATFORM_HISI_H_ + +#include "drmresources.h" +#include "platform.h" +#include "platformdrmgeneric.h" + +#include + +#include + +namespace android { + +class HisiImporter : public Importer { + public: + HisiImporter(DrmResources *drm); + ~HisiImporter() override; + + int Init(); + + EGLImageKHR ImportImage(EGLDisplay egl_display, buffer_handle_t handle) override; + int ImportBuffer(buffer_handle_t handle, hwc_drm_bo_t *bo) override; + int ReleaseBuffer(hwc_drm_bo_t *bo) override; + + private: + uint32_t ConvertHalFormatToDrm(uint32_t hal_format); + + DrmResources *drm_; + + const gralloc_module_t *gralloc_; +}; +} + +#endif From patchwork Wed Jan 10 06:05:44 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Stultz X-Patchwork-Id: 124017 Delivered-To: patches@linaro.org Received: by 10.140.22.227 with SMTP id 90csp4884468qgn; Tue, 9 Jan 2018 22:06:00 -0800 (PST) X-Received: by 10.84.216.8 with SMTP id m8mr10801423pli.215.1515564360522; Tue, 09 Jan 2018 22:06:00 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1515564360; cv=none; d=google.com; s=arc-20160816; b=S3Psavzjp1ix6qQFCz34QvFFla4Im+0GaN96Js8Hy53FtEq8CxevLUb3fMx8A6/Y5V gE9VK73VWsDGEeZQMnNZo96rRmUpAHKJtF9io6VHmZ+pMJqDqZshZDjLvE35LAijk1ib 5SG1DQGXobiVr6E57je9LRy5yfHaYg8B3uTMad/3QBL6a6zalpCqUuAS0GpHdxJuI2e9 K8brbME9u23R1ADFMrQbuN/xpIjuL+87IaCpimWNhi/0CWJsEZ5wF90/HpOir3WziMYo x8ll/zaw2EXkYiDYWeQVPaUYB9stlOfEnE4u6QgcJTVBc0nk4Uog1CKn6ONwnw9vbD6l U7ig== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:arc-authentication-results; bh=ruHabPhoJH7x6cQiQT3kPWzfx+MFHkUH8axYMMM6YbY=; b=jNEo/iohKA5/KTXMYwjo98RWV3OILTcNaI4lH7l+i12q5/yQ8hYUIto5gRlS1SNIg7 4APWNVlNITPNzt7dJpiGeGrNjfSHuoR5FGsScXn46w0Uv/FwgR24OlRJYxP+ZcaTq/TO iCjVuDAopmZtTJgJv5kvytPtuXwjqObM/xRaPVA7TJV0KABr0/G68E/fuZjOoU42Z+gC HsTRvL1M7jjAGKY1Lfu5h2Ille0p8kI8xogGJIfzKKbwUz/eG2RzX9XLMqKIfai/FwiQ JLimkSAb6UTOt9hI6I0F7rIHCaECLEYCP09UUFnXZyFUOVyABS8Oa9ciuL2l+tFJM1dx PO5g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=BolH0Jt8; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id p2sor3604239pgc.251.2018.01.09.22.06.00 for (Google Transport Security); Tue, 09 Jan 2018 22:06:00 -0800 (PST) Received-SPF: pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=BolH0Jt8; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=ruHabPhoJH7x6cQiQT3kPWzfx+MFHkUH8axYMMM6YbY=; b=BolH0Jt8kKGvg7iVB88WvanFI74ZhvbNCLQ7c2sVtXGHx5dExxHDFP0upjyR8EOiOp xSGG5oXnCA8M+sgZqHOu+DC9rF7pj7c0eIH0KzmZyPVcKyhzPzyPhKntBUDzrx8qu4xB fSyrbNzxrQ/wwyuEoFOLgfZYW5m+5MhOoyEgw= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=ruHabPhoJH7x6cQiQT3kPWzfx+MFHkUH8axYMMM6YbY=; b=Ietu20qEfFUyTPAY50++tKVDDeUVfLmHuxA5plMnz9lYRTIpA82tBzd/vj5/v73koj R0tnKUe7m0mdhDMivzIR0nUCInJgGn6pNqpm+Lika0h3ohlTEZ9J1t/MJKAiInKSUdQa FcyM4NhQo2meE+b0v/eOAmdNt4XIfAke1GTkCgeo+RDkc52gbZiqBol/RUKXTpi+rP3G txFyb8syphLU5y0ketbcrdIqTdHDQEGJJxq8CQs1tnoLKTWrhF8xC+j9ZIMNLIV6a0Uz IIl+98/XLczCO3E8jLmFOIpqxsQp9mCXXHm++m3Mi5u0Km/OkELo7jTWBqR4KG7Wup9a Pm7A== X-Gm-Message-State: AKGB3mIXlDP2tzOpbJMNn4BOo9/avTMgzBryrM5y7lNnG0Tc/3vr65t3 WeRKMET3zXh2HeFtOMkELVyafXPf X-Google-Smtp-Source: ACJfBouuXtYyF83fLmf/EM9FI3P1gzXEaALREcFb+LOLHqr5ITEsdk8lZPbbkQ+z9ndEOQ8eumSQ+w== X-Received: by 10.101.81.7 with SMTP id f7mr14237099pgq.431.1515564360186; Tue, 09 Jan 2018 22:06:00 -0800 (PST) Return-Path: Received: from localhost.localdomain ([2601:1c2:600:5100:4e72:b9ff:fe99:466a]) by smtp.gmail.com with ESMTPSA id g8sm25538595pgs.55.2018.01.09.22.05.58 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 09 Jan 2018 22:05:59 -0800 (PST) From: John Stultz To: dri-devel@lists.freedesktop.org Cc: Rob Herring , Marissa Wall , Sean Paul , Dmitry Shmidt , Robert Foss , Matt Szczesiak , Liviu Dudau , David Hanna , Rob Herring , John Stultz Subject: [RFC][PATCH 4/5] drm_hwcomposer: HACK: force single plane Date: Tue, 9 Jan 2018 22:05:44 -0800 Message-Id: <1515564345-1339-5-git-send-email-john.stultz@linaro.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1515564345-1339-1-git-send-email-john.stultz@linaro.org> References: <1515564345-1339-1-git-send-email-john.stultz@linaro.org> From: Rob Herring Change from Rob to force use of single plane. Without this we don't see anything on the screen. Suggestions for alternative solutions here would be greatly appreciated! Change-Id: Ic963c356ab1ef241d92fde6c890936b560f52051 Cc: Marissa Wall Cc: Sean Paul Cc: Dmitry Shmidt Cc: Robert Foss Cc: Matt Szczesiak Cc: Liviu Dudau Cc: David Hanna Cc: Rob Herring Signed-off-by: John Stultz --- drmhwctwo.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) -- 2.7.4 diff --git a/drmhwctwo.cpp b/drmhwctwo.cpp index dfca1a6..5ab4595 100644 --- a/drmhwctwo.cpp +++ b/drmhwctwo.cpp @@ -692,12 +692,10 @@ HWC2::Error DrmHwcTwo::HwcDisplay::ValidateDisplay(uint32_t *num_types, case HWC2::Composition::SolidColor: case HWC2::Composition::Cursor: case HWC2::Composition::Sideband: + default: layer.set_validated_type(HWC2::Composition::Client); ++*num_types; break; - default: - layer.set_validated_type(layer.sf_type()); - break; } } return *num_types ? HWC2::Error::HasChanges : HWC2::Error::None; From patchwork Wed Jan 10 06:05:45 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Stultz X-Patchwork-Id: 124018 Delivered-To: patches@linaro.org Received: by 10.140.22.227 with SMTP id 90csp4884486qgn; Tue, 9 Jan 2018 22:06:02 -0800 (PST) X-Received: by 10.98.186.25 with SMTP id k25mr15740568pff.28.1515564362329; Tue, 09 Jan 2018 22:06:02 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1515564362; cv=none; d=google.com; s=arc-20160816; b=mh0f1HSuc1U7XZRW53pbrPLiOKTGpLcR7xTJBFv0cZDUpwQYZ/+7ieOGlEfjE3mEee qZLzAZ04m7eois76hkG5wVvUBbstU6pU31Y0LU3KKyJ7py0TyKVDFzuTO9rP4ccgel3Y LfpoohuxKrlvbNMia4Y9NrBIlyKY5kAg2PpTStusLec7lnBh/pRhsuSwd00C+jfFeH92 olomTXX5bE1MmhOMdZz2dk5m3Rw+q2YhYw57YNFe6H3peG/9j0VsDo6qOXLp4AadCP5e Oa4EN2QAYvJsiZfP93Qi0CtdYk+4bfSlYvdbOCB2h+63kNu4+Al+WotKk+Q3zlxk3k6t BA+A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:arc-authentication-results; bh=R8Ll6R6hnLKcgo7Tb0n4MfoJzBeiSXPh0zGvbEWyXRE=; b=0aUUdyWXKTFIQzv8CM4864H6eWAdMac8UDlRMIyq9oVZja0dxpzxW3q+EJNW0yV7AK bYgOieaQu+6zyB1seahnGseluj6+mxPZfGrnNWSI4rSl+/BYoKPqDuqkhuYW7biKplis xbH0Fa9ajkmOIjjGnlPygtz4NgSMPJjdHB/qvTtC7pCjDUpYcTEHOE2WYzutBC1paMl4 XtEJzSWAWiFrJUN/pvlC8mhg6dqt5zenCBtLLKFtCuUz9TtxT3+L0lQAViXPw41wGfgK tRa7LTYnFaf4ONz8Dh2QNpPcFw0QgotjHr6z9NbZ+8OznCieksMRKpiedGh0R3UFxmUW 6Vng== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=VdvzVJ4Y; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id o7sor3589500pgq.113.2018.01.09.22.06.02 for (Google Transport Security); Tue, 09 Jan 2018 22:06:02 -0800 (PST) Received-SPF: pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=VdvzVJ4Y; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=R8Ll6R6hnLKcgo7Tb0n4MfoJzBeiSXPh0zGvbEWyXRE=; b=VdvzVJ4Y+962KMgD0anc19YlxbINGMN9bWRGqbXVUnIRsUawC1hVxP6lJyPGifaqbE JkcrCGYG8fCoew33Q+7gUXUC/vsp68epYilRbYA3xfLHtI7R8CynhTeY5AKrGUdPBUz0 lXDAZKOFo+bNdJBDzsJVmt0vSsfJ+aL3/AKCI= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=R8Ll6R6hnLKcgo7Tb0n4MfoJzBeiSXPh0zGvbEWyXRE=; b=XJhe3SMB5PDtEYWOXc1RnYPx5BjmGqOlzw0apu/dJfby/zBC9okc5n7TnBOSEFqIJy 7WAHgWLKP4kjiqvR97XPtYbNCEogpO/oRAXPFkhlBF6nmnx3Iab3yYd1OLKYBLQxduYi 7iCvKf4rz7kwzjAHSV4FO84iyI5vUoo+RQiHiexsb0RX6gawkijKcyYY0s0MaZFdqwWU wFD+8rmxYPb9FmqoBdcy3v5swyatAyb2tAWnPTujyfEKNbL/wMe/eGRA/t0z/fDbthG4 1yw0hwLy8tutHPLoyOuCCZq06yX9A4wHnKnYU4vKpDt8LvAWjAgnUNRJKB1DMOhgUxWN Iakw== X-Gm-Message-State: AKwxytcslttkIPcC8QIVeIJU6XbgnI7B9pcrJqXePFIelNVickUYO1VZ FZQeOhF/4KvMUbVF9NXDetaV6dtu X-Google-Smtp-Source: ACJfBou5Tv/Y3/gFYXv7lOVR8/bOBKcgoCloiwQLv5y0Pv+6hLuGbxsYWoSrAa5nUrlOP+NaJxzWvA== X-Received: by 10.101.99.129 with SMTP id h1mr386538pgv.101.1515564361923; Tue, 09 Jan 2018 22:06:01 -0800 (PST) Return-Path: Received: from localhost.localdomain ([2601:1c2:600:5100:4e72:b9ff:fe99:466a]) by smtp.gmail.com with ESMTPSA id g8sm25538595pgs.55.2018.01.09.22.06.00 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 09 Jan 2018 22:06:00 -0800 (PST) From: John Stultz To: dri-devel@lists.freedesktop.org Cc: John Stultz , Marissa Wall , Sean Paul , Dmitry Shmidt , Robert Foss , Matt Szczesiak , Liviu Dudau , David Hanna , Rob Herring Subject: [RFC][PATCH 5/5] drm_hwcomposer: HACK: Fix tearing on hikey/hikey960 Date: Tue, 9 Jan 2018 22:05:45 -0800 Message-Id: <1515564345-1339-6-git-send-email-john.stultz@linaro.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1515564345-1339-1-git-send-email-john.stultz@linaro.org> References: <1515564345-1339-1-git-send-email-john.stultz@linaro.org> When using drm_hwcomposer with the hikey/hikey960 boards, the resulting display shows lots of tearing. I'm not much of an expert in how this code should work, but it seems that we never call sync_wait(), and thus don't seem to be handling the fences properly? I'm not sure. Anyway, in a daze, I started cutting out code trying to make sure we call the CreateNextTimelineFence() and fb.set_release_fence_fd(). After doing so the tearing went away. I'm really not sure what is wrong that requires these hacks. It may be the hikey/hikey960 drm driver is incorrectly reporting or handling something? We do only have a single plane and no hardware compositing on the boards, so we are having to force the gpu to do all the compositing. Any ideas for what a proper fix here would be? Or even just hints on why this might make things work? Change-Id: Ifba58f6f1cb00e5271892c0241e4891abe211f22 Cc: Marissa Wall Cc: Sean Paul Cc: Dmitry Shmidt Cc: Robert Foss Cc: Matt Szczesiak Cc: Liviu Dudau Cc: David Hanna Cc: Rob Herring Signed-off-by: John Stultz --- drmdisplaycompositor.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) -- 2.7.4 diff --git a/drmdisplaycompositor.cpp b/drmdisplaycompositor.cpp index acd13b8..6c391d6 100644 --- a/drmdisplaycompositor.cpp +++ b/drmdisplaycompositor.cpp @@ -299,10 +299,11 @@ int DrmDisplayCompositor::ApplySquash(DrmDisplayComposition *display_comp) { display_comp->importer()); pre_compositor_->Finish(); - if (ret) { +/* if (ret) { ALOGE("Failed to squash layers"); return ret; } +*/ ret = display_comp->CreateNextTimelineFence(); if (ret <= 0) { @@ -390,8 +391,8 @@ int DrmDisplayCompositor::PrepareFrame(DrmDisplayComposition *display_comp) { std::vector &layers = display_comp->layers(); std::vector &comp_planes = display_comp->composition_planes(); - std::vector &squash_regions = - display_comp->squash_regions(); +// std::vector &squash_regions = +// display_comp->squash_regions(); std::vector &pre_comp_regions = display_comp->pre_comp_regions(); @@ -405,7 +406,7 @@ int DrmDisplayCompositor::PrepareFrame(DrmDisplayComposition *display_comp) { } int squash_layer_index = -1; - if (squash_regions.size() > 0) { + if (1) { //squash_regions.size() > 0) { squash_framebuffer_index_ = (squash_framebuffer_index_ + 1) % 2; ret = ApplySquash(display_comp); if (ret)