From 8f708a18e65b6992a385fbf90e21011f2d12cf17 Mon Sep 17 00:00:00 2001 From: Leona Chou Date: Thu, 19 Mar 2020 15:06:12 +0800 Subject: [PATCH] minigbm: add synaptics gbm driver Change the ozone platform from cast to drm add synaptics gbm driver for buffer management. BUG=b:152384632 TEST=use chromecast ui to verify drm TEST=use ozone_demo app to verify drm Change-Id: I9dff03e6b522ee84e34cbbcb28a40ca7857c4168 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/2108458 Reviewed-by: Daniel Nicoara Reviewed-by: Gurchetan Singh Tested-by: Daniel Nicoara Commit-Queue: Daniel Nicoara --- Android.mk | 1 + drv.c | 6 ++++++ synaptics.c | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 40 insertions(+) create mode 100644 synaptics.c diff --git a/Android.mk b/Android.mk index 564f416..3eab7ae 100644 --- a/Android.mk +++ b/Android.mk @@ -23,6 +23,7 @@ MINIGBM_SRC := \ nouveau.c \ radeon.c \ rockchip.c \ + synaptics.c \ tegra.c \ udl.c \ vc4.c \ diff --git a/drv.c b/drv.c index fee3e57..8009bac 100644 --- a/drv.c +++ b/drv.c @@ -54,6 +54,9 @@ extern const struct backend backend_radeon; #ifdef DRV_ROCKCHIP extern const struct backend backend_rockchip; #endif +#ifdef DRV_SYNAPTICS +extern const struct backend backend_synaptics; +#endif #ifdef DRV_TEGRA extern const struct backend backend_tegra; #endif @@ -104,6 +107,9 @@ static const struct backend *drv_get_backend(int fd) #ifdef DRV_ROCKCHIP &backend_rockchip, #endif +#ifdef DRV_SYNAPTICS + &backend_synaptics, +#endif #ifdef DRV_TEGRA &backend_tegra, #endif diff --git a/synaptics.c b/synaptics.c new file mode 100644 index 0000000..bcd8189 --- /dev/null +++ b/synaptics.c @@ -0,0 +1,33 @@ +/* + * Copyright 2020 The Chromium OS Authors. All rights reserved. + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#ifdef DRV_SYNAPTICS + +#include "drv_priv.h" +#include "helpers.h" +#include "util.h" + +static const uint32_t render_target_formats[] = { DRM_FORMAT_ARGB8888, DRM_FORMAT_ABGR8888, + DRM_FORMAT_XRGB8888 }; + +static int synaptics_init(struct driver *drv) +{ + drv_add_combinations(drv, render_target_formats, ARRAY_SIZE(render_target_formats), + &LINEAR_METADATA, BO_USE_RENDER_MASK | BO_USE_SCANOUT); + + return drv_modify_linear_combinations(drv); +} + +const struct backend backend_synaptics = { + .name = "synaptics", + .init = synaptics_init, + .bo_create = drv_dumb_bo_create, + .bo_destroy = drv_dumb_bo_destroy, + .bo_import = drv_prime_bo_import, + .bo_map = drv_dumb_bo_map, + .bo_unmap = drv_bo_munmap, +}; + +#endif