Skip to content

Commit

Permalink
blog: Add GSoC'24 UEFI GOP, Part II post
Browse files Browse the repository at this point in the history
This is the second post that outlines the progress on the UEFI GOP GSoC
project, particulary from week four to six.

Signed-off-by: procub3r <[email protected]>
  • Loading branch information
procub3r committed Jul 10, 2024
1 parent bf23aad commit d97d8ac
Show file tree
Hide file tree
Showing 6 changed files with 54 additions and 0 deletions.
54 changes: 54 additions & 0 deletions content/blog/2024-07-10-gsoc-uefi-gop.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
---
title: "GSoC'24: UEFI Graphics Output Protocol Support in Unikraft, Part II"
description: |
This is the second post in a series of posts where I talk about my progress with the project.
publishedDate: 2024-07-10
image: /images/unikraft-gsoc24.png
authors:
- Sriprad Potukuchi
tags:
- gsoc
- gsoc24
- uefi
- booting
---

## Project Overview

The widely available and standardized [UEFI Graphics Output Protocol](https://uefi.org/specs/UEFI/2.10/12_Protocols_Console_Support.html#efi-graphics-output-protocol) (GOP) interface is an excellent alternative to VGA or serial port consoles for printing logs to the screen.

This project aims to implement a UEFI GOP based console. For more information, check out [Part I](https://unikraft.org/blog/2024-06-18-gsoc-uefi-gop) of this series.

Check failure on line 20 in content/blog/2024-07-10-gsoc-uefi-gop.mdx

View workflow job for this annotation

GitHub Actions / Markdown Linter

line per sentence one line (and only one line) per sentence [Expected one sentence per line. Multiple end of sentence punctuation signs found on one line!]

## Progress

Check failure on line 22 in content/blog/2024-07-10-gsoc-uefi-gop.mdx

View workflow job for this annotation

GitHub Actions / Markdown Linter

Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Progress"]
- Using a placeholder [font](https://github.com/dhepper/font8x8), it is now possible to print null-terminated strings to the screens

Check failure on line 23 in content/blog/2024-07-10-gsoc-uefi-gop.mdx

View workflow job for this annotation

GitHub Actions / Markdown Linter

Lists should be surrounded by blank lines [Context: "- Using a placeholder [font](h..."]
<Image
src="/images/uefi-gop-first-text-render.png"
/>

- It is also possible to scale the font in both the axes independently
- No scaling
<Image
src="/images/uefi-gop-scaled-text-1.png"
/>
- Scaled Y-axis
<Image
src="/images/uefi-gop-scaled-text-2.png"
/>

- I've also implemented scrolling. When all the lines are filled and a new log needs to be printed, the current logs on the screen are scrolled up (using `memcpy`)
<Image
src="/images/uefi-gop-before-scrolling.png"
/>
<Image
src="/images/uefi-gop-after-scrolling.png"
/>

Right now, scrolling moves all the framebuffer data in place. Reads and writes in framebuffer memory are slower because the video adapter driver actually syncs the framebuffer with the screen. This needs to be optimized!

Check failure on line 46 in content/blog/2024-07-10-gsoc-uefi-gop.mdx

View workflow job for this annotation

GitHub Actions / Markdown Linter

line per sentence one line (and only one line) per sentence [Expected one sentence per line. Multiple end of sentence punctuation signs found on one line!]

## Next Steps

Check failure on line 48 in content/blog/2024-07-10-gsoc-uefi-gop.mdx

View workflow job for this annotation

GitHub Actions / Markdown Linter

Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Next Steps"]
- Finalize a font!

Check failure on line 49 in content/blog/2024-07-10-gsoc-uefi-gop.mdx

View workflow job for this annotation

GitHub Actions / Markdown Linter

Lists should be surrounded by blank lines [Context: "- Finalize a font!"]
- Optimize scrolling (by maintaining an additional buffer(?))
- Look into [this PR](https://github.com/unikraft/unikraft/pull/1464), which adds a generic console interface.

## Acknowledgement

Check failure on line 53 in content/blog/2024-07-10-gsoc-uefi-gop.mdx

View workflow job for this annotation

GitHub Actions / Markdown Linter

Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Acknowledgement"]
I would like to thank all the great Unikraft folk for being a great community!
Binary file added public/images/uefi-gop-after-scrolling.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/uefi-gop-before-scrolling.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/uefi-gop-first-text-render.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/uefi-gop-scaled-text-1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/uefi-gop-scaled-text-2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit d97d8ac

Please sign in to comment.