From patchwork Mon Oct 29 17:14:39 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexandru-Cosmin Gheorghe X-Patchwork-Id: 10659829 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id C464F13BF for ; Mon, 29 Oct 2018 17:15:21 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id BBAE929D7C for ; Mon, 29 Oct 2018 17:15:21 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id AFA1029D7D; Mon, 29 Oct 2018 17:15:21 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.2 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 5C53729D7E for ; Mon, 29 Oct 2018 17:15:21 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id EA65D6E072; Mon, 29 Oct 2018 17:14:50 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-eopbgr20084.outbound.protection.outlook.com [40.107.2.84]) by gabe.freedesktop.org (Postfix) with ESMTPS id 746B16E052 for ; Mon, 29 Oct 2018 17:14:42 +0000 (UTC) Received: from DB6PR0802MB2551.eurprd08.prod.outlook.com (10.172.251.149) by DB6PR0802MB2248.eurprd08.prod.outlook.com (10.172.227.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1273.19; Mon, 29 Oct 2018 17:14:39 +0000 Received: from DB6PR0802MB2551.eurprd08.prod.outlook.com ([fe80::19ca:93bb:bc0:985a]) by DB6PR0802MB2551.eurprd08.prod.outlook.com ([fe80::19ca:93bb:bc0:985a%7]) with mapi id 15.20.1273.027; Mon, 29 Oct 2018 17:14:39 +0000 From: Alexandru-Cosmin Gheorghe To: "seanpaul@chromium.org" , "airlied@linux.ie" , "dri-devel@lists.freedesktop.org" , Liviu Dudau , Brian Starkey , "malidp@foss.arm.com" , "maxime.ripard@bootlin.com" , "maarten.lankhorst@linux.intel.com" , Ayan Halder , "daniel.vetter@ffwll.ch" , Raymond Smith , David Garbett , Lisa Wu , Matt Szczesiak , Charles Xu , "james qian wang (Arm Technology China)" Subject: [PATCH v6 4/9] drm: Extend framebuffer_check to handle formats with cpp/char_per_block 0 Thread-Topic: [PATCH v6 4/9] drm: Extend framebuffer_check to handle formats with cpp/char_per_block 0 Thread-Index: AQHUb6rf9wJdbHQyyUy5xbddLwg+wA== Date: Mon, 29 Oct 2018 17:14:39 +0000 Message-ID: <20181029171419.4512-5-alexandru-cosmin.gheorghe@arm.com> References: <20181029171419.4512-1-alexandru-cosmin.gheorghe@arm.com> In-Reply-To: <20181029171419.4512-1-alexandru-cosmin.gheorghe@arm.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: LO2P265CA0032.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:61::20) To DB6PR0802MB2551.eurprd08.prod.outlook.com (2603:10a6:4:a1::21) x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [217.140.106.54] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; DB6PR0802MB2248; 6:jowNkVQgUf7BEvjzGLnkKMZ04bY0NTIUTvk9Y3wT8yfM8wm7JQFC3Mw1b9CwfBkNKGAcPctm8AoBvHa9vOGSo6i1JDRApOrTmIe6cZv0u1UJVLlFIaq4BzKFIFsCHnQT/PVQ7uvm/SjqJ/EX/BlgE1mAc87odWLtIbQWvWNG05D5J5pEn+BLHmomnJS35epM71bCawg/uve8VK0GOFHWvYJCX2sUYct+hYs88VhZUM+TpD51uxLqMFTgZhIYtgdAvarigaw8Qda1jPhDL/0McFZjl4NSf0f3AmWnhUWYu/YXPy373unadOt+XCojeORM59C8pZt+UQLixGWuna+p/sNwjP8atmftSdhS3v0qNTl4dRMUm0Dxpog8DDJyqhfVL/t9/mXuMpLBZEgpSU3nY8DPCJwxS98Kc+vqGmp40oRznLD8ET2+nTFhwzrZ1hAi54cwIKT6nYcrha8XZhvPLQ==; 5:kTSbnsx6ron2T1YTOsDYWizrEf7Ar08s/E2fYSQ56BZB4nBLoIWZrnW8CwgnIA/+o43Bqc6TD2DKd9fQVhXaZwEixnJ78VYoGQ8luOiwSPklyyGYjr1kSJ58Cm6x0suQGMsa1B3E4Mjw6rtGkz5w2ZELF+ry0JLdQC7pICdodKM=; 7:j7EKbyqg8B7+b/jUSX+MVsHyNNx3tmxiSvGbZq8FJXDpxXvEgAQsPJpkVEi0iKCFSwSYmfdh9HM9vDH9fobLigROlizLC6C0D3fgh+d1JYxe9GG1v0AzS/3X8XsxSQ9+0CrQ+Vz4luPgxHtlWSn+ug== x-ms-office365-filtering-correlation-id: d915fe53-823b-47ba-b771-08d63dc2024f x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:DB6PR0802MB2248; x-ms-traffictypediagnostic: DB6PR0802MB2248: nodisclaimer: True x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(180628864354917); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3231382)(944501410)(52105095)(93006095)(93001095)(3002001)(10201501046)(6055026)(148016)(149066)(150057)(6041310)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699051)(76991095); SRVR:DB6PR0802MB2248; BCL:0; PCL:0; RULEID:; SRVR:DB6PR0802MB2248; x-forefront-prvs: 084080FC15 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(396003)(39860400002)(376002)(366004)(346002)(136003)(189003)(199004)(86362001)(186003)(8676002)(81156014)(25786009)(106356001)(6512007)(6636002)(6436002)(5660300001)(81166006)(446003)(36756003)(6306002)(110136005)(54906003)(71200400001)(71190400001)(105586002)(486006)(53936002)(476003)(316002)(2900100001)(2616005)(11346002)(305945005)(72206003)(4326008)(2201001)(66066001)(5250100002)(478600001)(8936002)(7736002)(966005)(68736007)(2501003)(6506007)(386003)(99286004)(256004)(26005)(102836004)(5024004)(97736004)(6486002)(14454004)(3846002)(14444005)(6116002)(2906002)(52116002)(76176011)(1076002)(921003)(1121003); DIR:OUT; SFP:1101; SCL:1; SRVR:DB6PR0802MB2248; H:DB6PR0802MB2551.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: PBYxCQSopnKiXNzV1ZutuUEAO9VMhBwJorJz3j3BNgn5rL9fhg4exPmD/3lktYcWbWT/rp77Fqjk5wLATl8EQiNeR2XsAaNlXqiKIVKGbw6JGKcGvcwXZGm929LiHiyH5pXWjKebm8dn9yc/Hz4l3PcaG8wsM/jO5y65yTc9vWxcwa6EBHYrjmp9vTRbEXYMoqAmhZpO6z5NkLw6hiociClvrx60zgkO1ehdoU+yCtbGugNGEg0C0FABRin3ZbjJkJ85FtIeMvM7Waod6ILR1wttxZQka/L+jhoxp1k6aEoo56xoYzjityrBqrid64cfZ1wp3bPMQ07TOcmaYw+lPZouXLg9DhzrpzB7iUbBP1M= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: d915fe53-823b-47ba-b771-08d63dc2024f X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Oct 2018 17:14:39.5035 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0802MB2248 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: nd , Alexandru-Cosmin Gheorghe Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Virus-Scanned: ClamAV using ClamSMTP For formats that are supported only with non-linear modifiers it doesn't make to much sense to define cpp or char_per_block, so that will be set to 0. This patch adds a restriction to force having a modifier attached when cpp/char_per_block is 0, and to bypass checking the pitch restriction. This had been discussed here. [1] https://people.freedesktop.org/~cbrill/dri-log/?channel=dri-devel&highlight_names=&date=2018-09-13&show_html=true Reviewed-by: Brian Starkey Signed-off-by: Alexandru Gheorghe Reviewed-by: Daniel Vetter --- drivers/gpu/drm/drm_framebuffer.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/drm_framebuffer.c b/drivers/gpu/drm/drm_framebuffer.c index 6aca8a1ccdb6..167c1c4544af 100644 --- a/drivers/gpu/drm/drm_framebuffer.c +++ b/drivers/gpu/drm/drm_framebuffer.c @@ -195,8 +195,14 @@ static int framebuffer_check(struct drm_device *dev, for (i = 0; i < info->num_planes; i++) { unsigned int width = fb_plane_width(r->width, info, i); unsigned int height = fb_plane_height(r->height, info, i); + unsigned int block_size = info->char_per_block[i]; u64 min_pitch = drm_format_info_min_pitch(info, i, width); + if (!block_size && (r->modifier[i] == DRM_FORMAT_MOD_LINEAR)) { + DRM_DEBUG_KMS("Format requires non-linear modifier for plane %d\n", i); + return -EINVAL; + } + if (!r->handles[i]) { DRM_DEBUG_KMS("no buffer object handle for plane %d\n", i); return -EINVAL; @@ -208,7 +214,7 @@ static int framebuffer_check(struct drm_device *dev, if ((uint64_t) height * r->pitches[i] + r->offsets[i] > UINT_MAX) return -ERANGE; - if (r->pitches[i] < min_pitch) { + if (block_size && r->pitches[i] < min_pitch) { DRM_DEBUG_KMS("bad pitch %u for plane %d\n", r->pitches[i], i); return -EINVAL; }