summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAvinash Mehta <avinash.mehta@arm.com>2020-07-31 13:03:37 +0100
committerTushar Khandelwal <tushar.khandelwal@arm.com>2020-10-26 22:17:49 +0000
commit7811e6e7ece8808d38c57dee28a25a7f081b1c86 (patch)
treeff56842dcd01164306abc9a30489fc7d96852cef
parent87161e5fc2831b5f35dfda8603e2457160c44508 (diff)
Add minigbm patch that prevents flickering
Change-Id: I69c9bf33deedfb5ef07f9ce18c457670632c24a7 Signed-off-by: Avinash Mehta <avinash.mehta@arm.com>
-rw-r--r--tc0/patches/0001-Make-drv_mapping_destroy-be-called-in-release-builds.patch51
-rw-r--r--tc0/vendorsetup.sh1
2 files changed, 52 insertions, 0 deletions
diff --git a/tc0/patches/0001-Make-drv_mapping_destroy-be-called-in-release-builds.patch b/tc0/patches/0001-Make-drv_mapping_destroy-be-called-in-release-builds.patch
new file mode 100644
index 0000000..8497164
--- /dev/null
+++ b/tc0/patches/0001-Make-drv_mapping_destroy-be-called-in-release-builds.patch
@@ -0,0 +1,51 @@
+From 0907d821ccd589ecc0e047909cc6df18ddb5f31c Mon Sep 17 00:00:00 2001
+From: Jason Macnak <natsu@google.com>
+Date: Tue, 12 Nov 2019 10:53:05 -0800
+Subject: [PATCH] Make drv_mapping_destroy() be called in release builds
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The entire assert statement is currently being dropped when NDEBUG is defined
+which causes mappings to never be cleaned up on bo destruction. When mappings
+are not cleaned up, a new buffer that gets a recycled handle may find an old
+mapping in drv_bo_map() which is not valid for the new buffer.
+
+BUG=b:123764798
+TEST=built and ran with cuttlefish locally
+
+Change-Id: Ib7147c3f5ed3a2b84793dfc2b17236ee0d92ac13
+Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/1912760
+Tested-by: Jason Macnak <natsu@google.com>
+Reviewed-by: Stéphane Marchesin <marcheu@chromium.org>
+Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
+Commit-Queue: Jason Macnak <natsu@google.com>
+---
+ drv.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/drv.c b/drv.c
+index ef5cbc5..872b5d4 100644
+--- a/drv.c
++++ b/drv.c
+@@ -320,6 +320,7 @@ struct bo *drv_bo_create_with_modifiers(struct driver *drv, uint32_t width, uint
+
+ void drv_bo_destroy(struct bo *bo)
+ {
++ int ret;
+ size_t plane;
+ uintptr_t total = 0;
+ struct driver *drv = bo->drv;
+@@ -335,7 +336,8 @@ void drv_bo_destroy(struct bo *bo)
+ pthread_mutex_unlock(&drv->driver_lock);
+
+ if (total == 0) {
+- assert(drv_mapping_destroy(bo) == 0);
++ ret = drv_mapping_destroy(bo);
++ assert(ret == 0);
+ bo->drv->backend->bo_destroy(bo);
+ }
+
+--
+2.17.1
+
diff --git a/tc0/vendorsetup.sh b/tc0/vendorsetup.sh
index aecf073..d900291 100644
--- a/tc0/vendorsetup.sh
+++ b/tc0/vendorsetup.sh
@@ -35,4 +35,5 @@ PATCHES_DIR=$ANDROID_TOP_DIR/device/arm/tc0/patches
apply_patch "system/core" "0001-Add-amba-bus-support-to-platform-devices.patch"
apply_patch "external/minigbm" "0001-minigbm-komeda-Add-driver.patch"
+apply_patch "external/minigbm" "0001-Make-drv_mapping_destroy-be-called-in-release-builds.patch"
apply_patch "external/swiftshader" "0001-Don-t-unlock-Android-buffers-immediately-after-locki.patch"