libpayload: cbgfx: Run cbgfx_init() before we need it for draw_box()

calculate_color() uses the 'fbinfo' global that is initialized by
cbgfx_init(), so we need to run the latter before we can run the former
or we get a null pointer access.

Change-Id: I73ca8e20ca36f64d699379d504fd41dc2084f157
Signed-off-by: Julius Werner <jwerner@chromium.org>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/33855
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Patrick Rudolph <siro@das-labor.org>
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org>
diff --git a/payloads/libpayload/drivers/video/graphics.c b/payloads/libpayload/drivers/video/graphics.c
index 4956326..85a8642 100644
--- a/payloads/libpayload/drivers/video/graphics.c
+++ b/payloads/libpayload/drivers/video/graphics.c
@@ -183,6 +183,10 @@
 	struct vector top_left;
 	struct vector size;
 	struct vector p, t;
+
+	if (cbgfx_init())
+		return CBGFX_ERROR_INIT;
+
 	const uint32_t color = calculate_color(rgb, 0);
 	const struct scale top_left_s = {
 		.x = { .n = box->offset.x, .d = CANVAS_SCALE, },
@@ -193,9 +197,6 @@
 		.y = { .n = box->size.y, .d = CANVAS_SCALE, }
 	};
 
-	if (cbgfx_init())
-		return CBGFX_ERROR_INIT;
-
 	transform_vector(&top_left, &canvas.size, &top_left_s, &canvas.offset);
 	transform_vector(&size, &canvas.size, &size_s, &vzero);
 	add_vectors(&t, &top_left, &size);