retro-gtk is a toolkit for GTK+-based Libretro frontends. It is mainly used by GNOME Games to play retro games via Libretro gaming console emulators.

Currenly retro-gtk supports only software rendering. There are two ways hardware rendering can be used in retro-gtk:

  • to draw the framebuffer outputted by the Libretro core faster (using OpenGL instead of Cairo) and to apply shaders to it, like CRT shaders,
  • to allow the Libretro core to render its video output with hardware acceleration, some cores require it making retro-gtk unable to run them.

The goal of this Hack Week project is to make retro-gtk use hardware rendering as much as possible.

Looking for hackers with the skills:

opengl shaders gtk3 gtkglarea

This project is part of:

Hack Week 16

Activity

  • about 7 years ago: dsterba liked this project.
  • about 7 years ago: bfilho liked this project.
  • about 7 years ago: mwilck liked this project.
  • about 7 years ago: vliaskovitis liked this project.
  • about 7 years ago: SLindoMansilla joined this project.
  • about 7 years ago: SLindoMansilla liked this project.
  • about 7 years ago: aplazas added keyword "opengl" to this project.
  • about 7 years ago: aplazas added keyword "shaders" to this project.
  • about 7 years ago: aplazas added keyword "gtk3" to this project.
  • about 7 years ago: aplazas added keyword "gtkglarea" to this project.
  • about 7 years ago: ldevulder liked this project.
  • about 7 years ago: aplazas started this project.
  • about 7 years ago: aplazas originated this project.

  • Comments

    Be the first to comment!

    Similar Projects

    RISC-V emulator in GLSL capable of running Linux by favogt

    Description

    There are already numerous ways to run Linux and some programs through emulation in a web browser (e.g. x86 and riscv64 on https://bellard.org/jslinux/), but none use WebGL/WebGPU to run the emulation on the GPU.

    I already made a PoC of an AArch64 (64-bit Arm) emulator in OpenCL which is unfortunately hindered by a multitude of OpenCL compiler bugs on all platforms (Intel with beignet or the new compute runtime and AMD with Mesa Clover and rusticl). With more widespread and thus less broken GLSL vs. OpenCL and the less complex implementation requirements for RV32 (especially 32bit integers instead of 64bit), that should not be a major problem anymore.

    Goals

    Write an RISC-V system emulator in GLSL that is capable of booting Linux and run some userspace programs interactively. Ideally it is small enough to work on online test platforms like Shaderoo with a custom texture that contains bootstrap code, kernel and initrd.

    Minimum:

    riscv32 without FPU (RV32 IMA) and MMU (µClinux), running Linux in M-mode and userspace in U-mode.

    Stretch goals:

    FPU support, S-Mode support with MMU, SMP. Custom web frontend with more possibilities for I/O (disk image, network?).

    Resources

    RISC-V ISA Specifications
    Shaderoo
    OpenGL 4.5 Quick Reference Card

    Result as of Hackweek 2024

    WebGL turned out to be insufficient, it only supports OpenGL ES 3.0 but imageLoad/imageStore needs ES 3.1. So we switched directions and had to write a native C++ host for the shaders.

    As of Hackweek Friday, the kernel attempts to boot and outputs messages, but panics due to missing memory regions.

    Since then, some bugs were fixed and enough hardware emulation implemented, so that now Linux boots with framebuffer support and it's possible to log in and run programs!

    The repo with a demo video is available at https://github.com/Vogtinator/risky-v