Julius Werner (jwerner(a)chromium.org) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/15524
-gerrit
commit e678453bda748d23cd973c6d41b62a02e310d853
Author: Julius Werner <jwerner(a)chromium.org>
Date: Thu Jun 30 22:34:57 2016 -0700
cbgfx: Use memset() for faster screen clearing if possible
cbgfx currently makes a separate function call (recomputing some values)
for every single pixel it draws. While we mostly don't care that much
about display speed, this can become an issue if you're trying to paint
the whole screen white on a lowly-clocked Cortex-A53. As a simple
solution for these extreme cases, we can build a fast path into
clear_screen() that just memset()s whole framebuffer lines if the color
and pixel format allow it.
BUG=chrome-os-partner:54416
TEST=Screen drawing speed on Kevin visibly improves (from 2.5s to 3ms).
Change-Id: I22f032afbb86b96fa5a0cbbdce8526a905c67b58
Signed-off-by: Julius Werner <jwerner(a)chromium.org>
---
payloads/libpayload/drivers/video/graphics.c | 24 +++++++++++++++++-------
1 file changed, 17 insertions(+), 7 deletions(-)
diff --git a/payloads/libpayload/drivers/video/graphics.c b/payloads/libpayload/drivers/video/graphics.c
index 01e3565..89e5729 100644
--- a/payloads/libpayload/drivers/video/graphics.c
+++ b/payloads/libpayload/drivers/video/graphics.c
@@ -223,16 +223,26 @@ int clear_canvas(const struct rgb_color *rgb)
int clear_screen(const struct rgb_color *rgb)
{
- uint32_t color;
- struct vector p;
-
if (cbgfx_init())
return CBGFX_ERROR_INIT;
- color = calculate_color(rgb);
- for (p.y = 0; p.y < screen.size.height; p.y++)
- for (p.x = 0; p.x < screen.size.width; p.x++)
- set_pixel(&p, color);
+ struct vector p;
+ uint32_t color = calculate_color(rgb);
+ const int bpp = fbinfo->bits_per_pixel;
+ const int bpl = fbinfo->bytes_per_line;
+
+ /* If color is grey, we can fastpath through memset.
+ * We assume that for 32bpp the high 8 bits get ignored anyway. */
+ if ((((color >> 8) & 0xff) == (color & 0xff)) && (bpp == 16 ||
+ (((color >> 16) & 0xff) == (color & 0xff)))) {
+ uint8_t *row, *end = fbaddr + fbinfo->y_resolution * bpl;
+ for (row = fbaddr; row < end; row += bpl)
+ memset(row, color & 0xff, fbinfo->x_resolution * bpp/8);
+ } else {
+ for (p.y = 0; p.y < screen.size.height; p.y++)
+ for (p.x = 0; p.x < screen.size.width; p.x++)
+ set_pixel(&p, color);
+ }
return CBGFX_SUCCESS;
}
the following patch was just integrated into master:
commit cc37c85ab4edb0c5d3d0c3e82865b65e0f469875
Author: Abhay Kumar <abhay.kumar(a)intel.com>
Date: Mon Jun 27 10:46:48 2016 -0700
mainboard/google/reef: Configure DDI0, DDI1 HPD GPIO lines
Configure GPIO_199 and GPIO_200 as NF2 to work as HPD.
Change-Id: If3aa6b75ed22c221cfbedaecf16035cdd9939387
Signed-off-by: Abhay Kumar <abhay.kumar(a)intel.com>
Reviewed-on: https://review.coreboot.org/15447
Reviewed-by: Aaron Durbin <adurbin(a)chromium.org>
Tested-by: build bot (Jenkins)
Reviewed-by: Paul Menzel <paulepanter(a)users.sourceforge.net>
See https://review.coreboot.org/15447 for details.
-gerrit
the following patch was just integrated into master:
commit af9f35a2ced060450f61eab2e62936b857bcd077
Author: Saurabh Satija <saurabh.satija(a)intel.com>
Date: Sun Jun 26 18:25:34 2016 -0700
mainboard/google/reef: Use common NHLT
Add ACPI NHLT table generation that the current hardware
supports.
Reef supports two audio codecs, Dialog 7219 for headsets
and Maxim 98357 for speakers.
Change-Id: Ie39947960c86b8f65140834e31f9ed9f1b578485
Signed-off-by: Saurabh Satija <saurabh.satija(a)intel.com>
Reviewed-on: https://review.coreboot.org/15440
Tested-by: build bot (Jenkins)
Reviewed-by: Aaron Durbin <adurbin(a)chromium.org>
See https://review.coreboot.org/15440 for details.
-gerrit
the following patch was just integrated into master:
commit 90e716691df44d82e38039ce4be20d80f9b4f030
Author: Saurabh Satija <saurabh.satija(a)intel.com>
Date: Thu May 26 16:08:45 2016 -0700
mainboard/intel/amenia: add NHLT support
Add ACPI NHLT table generation that the current hardware
supports as well select the hardware used on the board.
Amenia has support for two audio codecs, Dialog for
headsets and Maxim for speakers.
Change-Id: Iaba9ec81ffb4f128f2e4413dec5174d9ecb856c9
Signed-off-by: Saurabh Satija <saurabh.satija(a)intel.com>
Reviewed-on: https://review.coreboot.org/15024
Tested-by: build bot (Jenkins)
Reviewed-by: Aaron Durbin <adurbin(a)chromium.org>
See https://review.coreboot.org/15024 for details.
-gerrit
the following patch was just integrated into master:
commit 734aa8713c7d169501ff74c0e7b02ba7e9cd9e71
Author: Saurabh Satija <saurabh.satija(a)intel.com>
Date: Tue Jun 21 14:22:16 2016 -0700
soc/intel/apollolake: add initial NHLT support
Provide the initial NHLT support for the following hardware:
1. 2 channel digital microphone array
2. Dialog 7219 headset
3. Maxim 98357 speaker amplifiers.
The code utilizes the Intel SoC common NHLT support.
Change-Id: Ic31e834a08f29c66512a7a63ad7bb35e0374e86a
Signed-off-by: Saurabh Satija <saurabh.satija(a)intel.com>
Signed-off-by: Aaron Durbin <adurbin(a)chromium.org>
Reviewed-on: https://review.coreboot.org/15504
Reviewed-by: Furquan Shaikh <furquan(a)google.com>
Tested-by: build bot (Jenkins)
See https://review.coreboot.org/15504 for details.
-gerrit
the following patch was just integrated into master:
commit 36de4652e04fcc2c6d92886404c78225e7b6468c
Author: Aaron Durbin <adurbin(a)chromium.org>
Date: Wed Jun 29 17:28:02 2016 -0500
soc/intel/common: use nvs.h include for nhlt code
The nvs.h header is the one which defines global_nvs_t proper.
Don't rely on an indirect inclusion.
Change-Id: I89d6a73f65e408c73f068b4a35b5efd361a6e5d3
Signed-off-by: Aaron Durbin <adurbin(a)chromium.org>
Reviewed-on: https://review.coreboot.org/15503
Reviewed-by: Furquan Shaikh <furquan(a)google.com>
Tested-by: build bot (Jenkins)
See https://review.coreboot.org/15503 for details.
-gerrit
the following patch was just integrated into master:
commit 2656219008045b983d4f72adef0e0a09f6e6265c
Author: Aaron Durbin <adurbin(a)chromium.org>
Date: Wed Jun 29 17:26:33 2016 -0500
soc/intel/apollolake: typedef global_nvs_t for consistency
Every other platform has global_nvs_t as a typedef. For some
reason apollolake didn't bother following current conventions.
Fix this omission to allow for better code sharing and consistency.
Change-Id: Id596eed517737759a64ce803c89ea2a05cbe2cce
Signed-off-by: Aaron Durbin <adurbin(a)chromium.org>
Reviewed-on: https://review.coreboot.org/15502
Reviewed-by: Furquan Shaikh <furquan(a)google.com>
Tested-by: build bot (Jenkins)
See https://review.coreboot.org/15502 for details.
-gerrit