From patchwork Thu Sep 19 16:30:58 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?VmlsbGUgU3lyasOkbMOk?= X-Patchwork-Id: 11152891 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id BE1531599 for ; Thu, 19 Sep 2019 16:31:35 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id A6271218AF for ; Thu, 19 Sep 2019 16:31:35 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A6271218AF Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 1EDBF6F681; Thu, 19 Sep 2019 16:31:35 +0000 (UTC) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id BC5436F53D for ; Thu, 19 Sep 2019 16:31:33 +0000 (UTC) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 19 Sep 2019 09:31:33 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,524,1559545200"; d="scan'208";a="199451847" Received: from stinkbox.fi.intel.com (HELO stinkbox) ([10.237.72.174]) by orsmga002.jf.intel.com with SMTP; 19 Sep 2019 09:31:31 -0700 Received: by stinkbox (sSMTP sendmail emulation); Thu, 19 Sep 2019 19:31:30 +0300 From: Ville Syrjala To: intel-gfx@lists.freedesktop.org Date: Thu, 19 Sep 2019 19:30:58 +0300 Message-Id: <20190919163113.17402-7-ville.syrjala@linux.intel.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190919163113.17402-1-ville.syrjala@linux.intel.com> References: <20190919163113.17402-1-ville.syrjala@linux.intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH xf86-video-intel 06/21] sna: Add sna_br13_color_depth() X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" From: Ville Syrjälä Refactor the BR13 color depth setup to common helper. This eliminates a bunch of implicit fall through warns. Signed-off-by: Ville Syrjälä --- src/sna/kgem.c | 10 +++------ src/sna/sna.h | 19 ++++++++++++++++ src/sna/sna_blt.c | 56 ++++++++++------------------------------------- src/sna/sna_io.c | 30 ++++++++----------------- 4 files changed, 43 insertions(+), 72 deletions(-) diff --git a/src/sna/kgem.c b/src/sna/kgem.c index d396f1b40dbc..9c0708a635fb 100644 --- a/src/sna/kgem.c +++ b/src/sna/kgem.c @@ -8148,13 +8148,9 @@ kgem_replace_bo(struct kgem *kgem, } br13 |= 0xcc << 16; - switch (bpp) { - default: - case 32: br00 |= BLT_WRITE_ALPHA | BLT_WRITE_RGB; - br13 |= 1 << 25; /* RGB8888 */ - case 16: br13 |= 1 << 24; /* RGB565 */ - case 8: break; - } + br13 |= sna_br13_color_depth(bpp); + if (bpp == 32) + br00 |= BLT_WRITE_ALPHA | BLT_WRITE_RGB; b = kgem->batch + kgem->nbatch; if (kgem->gen >= 0100) { diff --git a/src/sna/sna.h b/src/sna/sna.h index cf2a7a519f29..f2bc189624a5 100644 --- a/src/sna/sna.h +++ b/src/sna/sna.h @@ -1397,4 +1397,23 @@ static inline void add_shm_flush(struct sna *sna, struct sna_pixmap *priv) sna->needs_shm_flush = true; } +static inline uint32_t sna_br13_color_depth(int bpp) +{ + uint32_t br13 = 0; + + switch (bpp) { + default: + assert(0); + /* fall through */ + case 32: + br13 |= 1 << 25; /* RGB8888 */ + /* fall through */ + case 16: + br13 |= 1 << 24; /* RGB565 */ + /* fall through */ + case 8: + return br13; + } +} + #endif /* _SNA_H */ diff --git a/src/sna/sna_blt.c b/src/sna/sna_blt.c index 61e2b0feaf35..005224363b9c 100644 --- a/src/sna/sna_blt.c +++ b/src/sna/sna_blt.c @@ -154,12 +154,7 @@ static bool sna_blt_fill_init(struct sna *sna, } blt->br13 |= 1<<31 | (fill_ROP[alu] << 16); - switch (bpp) { - default: assert(0); - case 32: blt->br13 |= 1 << 25; /* RGB8888 */ - case 16: blt->br13 |= 1 << 24; /* RGB565 */ - case 8: break; - } + blt->br13 |= sna_br13_color_depth(bpp); blt->pixel = pixel; blt->bpp = bpp; @@ -372,12 +367,7 @@ static bool sna_blt_copy_init(struct sna *sna, blt->overwrites = alu == GXcopy || alu == GXclear || alu == GXset; blt->br13 = (copy_ROP[alu] << 16) | blt->pitch[1]; - switch (bpp) { - default: assert(0); - case 32: blt->br13 |= 1 << 25; /* RGB8888 */ - case 16: blt->br13 |= 1 << 24; /* RGB565 */ - case 8: break; - } + blt->br13 |= sna_br13_color_depth(bpp); kgem_set_mode(kgem, KGEM_BLT, dst); if (!kgem_check_many_bo_fenced(kgem, src, dst, NULL)) { @@ -425,13 +415,10 @@ static bool sna_blt_alpha_fixup_init(struct sna *sna, blt->overwrites = 1; blt->br13 = (0xfc << 16) | blt->pitch[1]; - switch (bpp) { - default: assert(0); - case 32: blt->cmd |= BLT_WRITE_ALPHA | BLT_WRITE_RGB; - blt->br13 |= 1 << 25; /* RGB8888 */ - case 16: blt->br13 |= 1 << 24; /* RGB565 */ - case 8: break; - } + blt->br13 |= sna_br13_color_depth(bpp); + if (bpp == 32) + blt->cmd |= BLT_WRITE_ALPHA | BLT_WRITE_RGB; + blt->pixel = alpha; kgem_set_mode(kgem, KGEM_BLT, dst); @@ -3356,13 +3343,9 @@ static bool sna_blt_fill_box(struct sna *sna, uint8_t alu, assert(br13 <= MAXSHORT); br13 |= fill_ROP[alu] << 16; - switch (bpp) { - default: assert(0); - case 32: cmd |= BLT_WRITE_ALPHA | BLT_WRITE_RGB; - br13 |= 1 << 25; /* RGB8888 */ - case 16: br13 |= 1 << 24; /* RGB565 */ - case 8: break; - } + br13 |= sna_br13_color_depth(bpp); + if (bpp == 32) + cmd |= BLT_WRITE_ALPHA | BLT_WRITE_RGB; /* All too frequently one blt completely overwrites the previous */ overwrites = alu == GXcopy || alu == GXclear || alu == GXset; @@ -3517,12 +3500,7 @@ bool sna_blt_fill_boxes(struct sna *sna, uint8_t alu, assert(br13 <= MAXSHORT); br13 |= 1<<31 | fill_ROP[alu] << 16; - switch (bpp) { - default: assert(0); - case 32: br13 |= 1 << 25; /* RGB8888 */ - case 16: br13 |= 1 << 24; /* RGB565 */ - case 8: break; - } + br13 |= sna_br13_color_depth(bpp); kgem_set_mode(kgem, KGEM_BLT, bo); if (!kgem_check_batch(kgem, 14) || @@ -3739,12 +3717,7 @@ bool sna_blt_copy_boxes(struct sna *sna, uint8_t alu, assert(br13 <= MAXSHORT); br13 |= copy_ROP[alu] << 16; - switch (bpp) { - default: assert(0); - case 32: br13 |= 1 << 25; /* RGB8888 */ - case 16: br13 |= 1 << 24; /* RGB565 */ - case 8: break; - } + br13 |= sna_br13_color_depth(bpp); /* Compare first box against a previous fill */ if ((alu == GXcopy || alu == GXclear || alu == GXset) && @@ -4086,12 +4059,7 @@ bool sna_blt_copy_boxes__with_alpha(struct sna *sna, uint8_t alu, assert(br13 <= MAXSHORT); br13 |= copy_ROP[alu] << 16; - switch (bpp) { - default: assert(0); - case 32: br13 |= 1 << 25; /* RGB8888 */ - case 16: br13 |= 1 << 24; /* RGB565 */ - case 8: break; - } + br13 |= sna_br13_color_depth(bpp); kgem_set_mode(kgem, KGEM_BLT, dst_bo); if (!kgem_check_many_bo_fenced(kgem, dst_bo, src_bo, NULL)) { diff --git a/src/sna/sna_io.c b/src/sna/sna_io.c index d32bd583fc42..d03280edb7a7 100644 --- a/src/sna/sna_io.c +++ b/src/sna/sna_io.c @@ -465,13 +465,9 @@ fallback: } br13 = 0xcc << 16; - switch (cpp) { - default: - case 4: cmd |= BLT_WRITE_ALPHA | BLT_WRITE_RGB; - br13 |= 1 << 25; /* RGB8888 */ - case 2: br13 |= 1 << 24; /* RGB565 */ - case 1: break; - } + br13 |= sna_br13_color_depth(cpp * 4); + if (cpp == 4) + cmd |= BLT_WRITE_ALPHA | BLT_WRITE_RGB; kgem_set_mode(kgem, KGEM_BLT, dst_bo); if (!kgem_check_batch(kgem, 10) || @@ -1042,13 +1038,9 @@ tile: br13 >>= 2; } br13 |= 0xcc << 16; - switch (dst->drawable.bitsPerPixel) { - default: - case 32: cmd |= BLT_WRITE_ALPHA | BLT_WRITE_RGB; - br13 |= 1 << 25; /* RGB8888 */ - case 16: br13 |= 1 << 24; /* RGB565 */ - case 8: break; - } + br13 |= sna_br13_color_depth(dst->drawable.bitsPerPixel); + if (dst->drawable.bitsPerPixel == 32) + cmd |= BLT_WRITE_ALPHA | BLT_WRITE_RGB; kgem_set_mode(kgem, KGEM_BLT, dst_bo); if (!kgem_check_batch(kgem, 10) || @@ -1548,13 +1540,9 @@ tile: br13 >>= 2; } br13 |= 0xcc << 16; - switch (dst->drawable.bitsPerPixel) { - default: - case 32: cmd |= BLT_WRITE_ALPHA | BLT_WRITE_RGB; - br13 |= 1 << 25; /* RGB8888 */ - case 16: br13 |= 1 << 24; /* RGB565 */ - case 8: break; - } + br13 |= sna_br13_color_depth(dst->drawable.bitsPerPixel); + if (dst->drawable.bitsPerPixel == 32) + cmd |= BLT_WRITE_ALPHA | BLT_WRITE_RGB; kgem_set_mode(kgem, KGEM_BLT, dst_bo); if (!kgem_check_batch(kgem, 10) ||