In Development – RetroArch ANGLE support – OpenGL support for UWP and more

ANGLE is middleware developed by Google that serves as an OpenGL compatibility layer on systems where OpenGL support is either spotty or missing entirely. It converts OpenGL calls to Direct3D 9/11.

In this video, you will see ANGLE being used on RetroArch UWP. In specific, it allows us to run OpenGL cores now on the Xbox One, where only Direct3D 11/12 are available as graphics APIs. Mupen64plus Next is shown running in this video on an Xbox One S with fairly acceptable results.

Will this be ready for the next version?

We don’t know yet if this will make it for version 1.8.2.

Let us tell you though what this will entail in the future –

  • There will likely be two binaries from now on for the desktop Win32 Windows version – one with ANGLE, one without. The non-ANGLE version will use your system-provided OpenGL driver, while the ANGLE version will use the ANGLE version of the OpenGL dynamic libraries.
  • ANGLE works over OpenGL ES. This means that ANGLE requires separately compiled cores targeting OpenGL ES 2/3 instead of desktop OpenGL. What this means is that 1) we need separate cores since the current OpenGL cores available for Windows assume that desktop OpenGL will be targeted, and 2) a libretro core has to have a working OpenGL ES 2 or 3 implementation in order for it to work. This will mean that currently, cores like Quake 2/3/Doom 3 won’t work since there are no working OpenGL ES 2 codepaths in those cores. However, Mupen64plus Next and Flycast do have OpenGLES 2 codepaths.

What usecases are there for using ANGLE instead of regular OpenGL?

There are several scenarios imaginable where you would want to use ANGLE. Here are some of them –

  • UWP (shorthand for Universal Windows Platform) allows you to make one binary that will work on Windows Mobile 10, Windows 10 and Xbox One. The only graphics API available for UWP programs is Direct3D 11 or 12. So for OpenGL cores to work, a middleware layer like ANGLE which converts OpenGL to Direct3D is our only option. Therefore, ANGLE allows us to run OpenGL ES 2 cores on the Xbox One.
  • Certain graphics cards might have nonexistent OpenGL support on Windows 10 and therefore fall back to Microsoft’s reference OpenGL 1.1 drivers. This is pretty much the worst case imaginable and really limits what you can do with OpenGL on such graphics cards. Intel HD 2000/3000 series integrated GPUs are pretty much in this position. For such GPUs, ANGLE might be your only option to get any kind of acceptable level of hardware accelerated graphics support with openGL-based cores.
  • OpenGL driver support might be stagnating for certain graphics cards, and therefore several bugs go unresolved in their OpenGL driver implementations. ANGLE is a good way to work around that assuming you are OK with an OpenGL ES 2/3 feature set.

We will fill you in as things develop how ANGLE will fit into RetroArch’s future releases. For now, the path seems clear – separate core versions for the emulators that have viable OpenGL ES 2/3 codepaths, and separate binaries at least on Windows desktop for an ANGLE-enabled and non-ANGLE enabled version. The redist (redistributable) will also need to be updated to include the extra dynamic library dependencies.

RetroArch 1.8.1 released!


RetroArch 1.8.1 has just been released. This version sees the coming of age of the mobile UI, which now has support for thumbnails. This will bring a transformative change to the way people get to interact with the UI on Android/iOS. And the best part is that this is only the beginning, even more drastic UX enhancements are planned!

Grab it here.

If you’d like to show your support, consider donating to us. Check here in order to learn more. In addition to being able to support us on Patreon, there is now also the option to sponsor us on Github Sponsors! You can also help us out by buying some of our merch on our Teespring store!

On-demand thumbnail downloading now enabled by default on Android/iOS

We’ve made the decision to enable the auto thumbnail scraping feature by default on Android/iOS since both devices are likely to be connected to the Internet. This is inline with what the majority of people on these platforms would want the default behavior to be. All other platforms remain unaffected – for systems other than Android/iOS therefore, it has to be enabled manually for it to work.

In case you are using your device offline and/or you don’t want a HTTP request to be performed every time you browse a new entry in a playlist, you can turn this setting off by going to ‘Main Menu -> Online Updater’ and turning off ‘On-Demand Thumbnail Downloads’.

MaterialUI – Thumbnail support plus more themes! The mobile UI finally grows up!

We are beyond excited to present to you even more UX enhancements for MaterialUI, the default UI for mobile devices like Android and iOS.

There is now initial thumbnail support for playlists in MaterialUI!

RetroArch 1.8.1 adds the Thumbnails and Thumbnail Upscaling Threshold options under User Interface > Appearance, and adds two new options: Portrait Thumbnail View and Landscape Thumbnail View. There are currently only list view implementations, which look something like this:

Portrait Thumbnail View

Off

List (Small)

List (Medium)

Landscape Thumbnail View

OFF

List (Small)

List (Medium)

List (Large)

Note the new ‘switch thumbnail view’ icon on the title bar (next to the search icon). This shows up when viewing any playlist provided that User Interface > Appearance > Thumbnails is set to anything other than OFF. Touching this icon switches to the next view mode (this is done independently for each screen orientation). Pressing the ‘scan’ button on a gamepad (RetroPad X) has the same effect.

On-demand thumbnail downloads are fully supported.

All loaded thumbnails have a nice ‘fade in’ animation.

A couple more screenshots –

We implore everybody that might have bounced off earlier versions of RetroArch for Android/iOS to please give this new version a chance. We are trying our best to be receptive to user feedback and whip the UX into shape so that it becomes a user interface that you will come to love instead of tolerate (at best). Thumbnail support has been missing for a long time so this is bound to be a big deal along with the other UX enhancements that version 1.8.0 already brought with it

Changes

1.8.1

  • BUGFIX/MENU: Fix menu rendering with Mali GPUs after changing video dimensions
  • CDROM: Adds pregap support to cdfs helper methods
  • CHEEVOS: Provides the new PCEngine hashing algorithm for RetroAchievements
  • LOCALIZATION: Update French translation
  • LOCALIZATION: Update Polish translation
  • LOCALIZATION: Update Spanish translation
  • MENU/MATERIALUI: Initial thumbnail support
  • MENU/MATERIALUI: Cutie / Virtual Boy theme added
  • MENU/MATERIALUI: Bugfix – Under certain extreme circumstances, entries with very long sublabel strings could have their text prematurely ‘clipped’ as the entry is scrolled beyond the top of the screen
  • MENU/MATERIALUI: Bugfix – Certain setting value strings were unnecessarily truncated (with a …) when using smooth ticker text
  • MENU/XMB: Sunbeam theme added
  • SWITCH: Accelerometer, gyroscope and illuminance sensor support
  • VITA: Accelerometer and gyroscope sensor support

What’s next?

We will be following this blog post up in the upcoming days with more about the Doom 3 core that libretro devs have been working on. Stay tuned – this core represents a big milestone for us since it is a semi-modern game running as a libretro core inside RetroArch, and our aim has always been to appeal beyond the emulation scene. We are fully supportive of even more non-emulator cores in the future, but we won’t forget about the emulation scene either, and we have some BIG announcements coming up that still remain a secret. So stay tuned and wait for further information to arrive when the time is right!