Skip to content

Conversation

@crawfxrd
Copy link
Contributor

@crawfxrd crawfxrd commented Nov 11, 2025

Add bindings for the following protocols:

  • HiiFont (EFI_HII_FONT_PROTOCOL)
  • HiiFontEx (EFI_HII_FONT_EX_PROTOCOL)
  • HiiString (EFI_HII_STRING_PROTOCOL)
  • HiiImage (EFI_HII_IMAGE_PROTOCOL)
  • HiiImageEx (EFI_HII_IMAGE_EX_PROTOCOL)
  • HiiPopup (EFI_HII_POPUP_PROTOCOL)
  • FormBrowser2 (EFI_FORM_BROWSER2_PROTOCOL)

Ref: UEFI 2.11: 34 HII Protocols
Ref: UEFI 2.11: 35 HII Configuration Processing and Browser Protocol

TODO

  • Determine correct implementation and use of anonymous union in ImageOutput
  • Add glyph-related data types to complete HiiFontExProtocol.get_glyph_info
  • Add HII package definitions for database integration (Section 33.3)?
    • Will add IFR related stuff in a follow up, since it looks like a lot.

Checklist

  • Sensible git history (for example, squash "typo" or "fix" commits). See the Rewriting History guide for help.
  • Update the changelog (if necessary)

@crawfxrd crawfxrd force-pushed the hii-bindings branch 2 times, most recently from 89651fd to 96848f4 Compare November 11, 2025 23:47
@crawfxrd crawfxrd marked this pull request as ready for review November 12, 2025 21:26
@crawfxrd crawfxrd force-pushed the hii-bindings branch 3 times, most recently from 3f187e7 to aea4371 Compare November 19, 2025 21:17
@crawfxrd crawfxrd changed the title uefi-raw: Add bindings for more HII protocols uefi-raw: Add bindings for most HII protocols Nov 19, 2025
@crawfxrd
Copy link
Contributor Author

I've added the Form Browser and Popup protocols for completion, since I know I'll need the form browser.

All HII protocols should now have bindings, except:

  • EFI_HII_IMAGE_DECODER_PROTOCOL: Seems very niche; unlikely to be used.
  • EFI_HII_FONT_GLYPH_GENERATOR_PROTOCOL: Not even implemented in edk2.

Add bindings for the following protocols:

- HiiFont (EFI_HII_FONT_PROTOCOL)
- HiiFontEx (EFI_HII_FONT_EX_PROTOCOL)
- HiiString (EFI_HII_STRING_PROTOCOL)
- HiiImage (EFI_HII_IMAGE_PROTOCOL)
- HiiImageEx (EFI_HII_IMAGE_EX_PROTOCOL)
- HiiPopup (EFI_HII_POPUP_PROTOCOL)
- FormBrowser2 (EFI_FORM_BROWSER2_PROTOCOL)

Ref: UEFI 2.11: 34 HII Protocols
Ref: UEFI 2.11: 35 HII Configuration Processing and Browser Protocol
Signed-off-by: Tim Crawford <tcrawford@system76.com>
Copy link
Member

@phip1611 phip1611 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! Can you point me to any higher-level real world usage of these protocols? Would love to see a real-world demo

@crawfxrd
Copy link
Contributor Author

crawfxrd commented Nov 20, 2025

System76 has several UEFI modules currently using redox_uefi that I am planning to switch to uefi-rs.

In this case of HII, we replace edk2's Form Display Engine (FDE) Protocol (DisplayEngineDxe) to implement a custom UI for our firmware.

(Examples of what the UI looks like can be seen in e.g.: system76/firmware-setup#53)

The Internal Forms Representation (IFR) bindings still need to be added in a follow up for actually processing forms data for rendering.

And the actual declaration of the forms themselves is still done from edk2 modules using its Visual Forms Representation (VFR) language.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants