Project Description

Sometimes when developing a GTK program, we want some nice 3D rendered content in it. And to do that, usually we want to use some Graphics API.

For OpenGL, we can easily solve that with GtkGLArea. But GL is not the only API exists; there's also a fancy new API called Vulkan (and even GTK itself have a backend for it), yet at the moment there is no such thing as GtkVulkanArea.

We need to fix that.

Goal for this Hackweek

Implement a widget serve roughly the same purpose of GtkGLArea, but for Vulkan. It doesn't need to be feature complete or production ready, we just want a quick and dirty PoC as a foundation for future implementations.

Resources

GtkGLArea

Vulkan

Looking for hackers with the skills:

vulkan gtk 3d opengl c

This project is part of:

Hack Week 23

Activity

  • about 2 years ago: vliaskovitis liked this project.
  • about 2 years ago: epaolantonio liked this project.
  • about 2 years ago: yudaike started this project.
  • about 2 years ago: yudaike added keyword "c" to this project.
  • about 2 years ago: yudaike added keyword "vulkan" to this project.
  • about 2 years ago: yudaike added keyword "gtk" to this project.
  • about 2 years ago: yudaike added keyword "3d" to this project.
  • about 2 years ago: yudaike added keyword "opengl" to this project.
  • about 2 years ago: yudaike originated this project.

  • Comments

    • yudaike
      about 2 years ago by yudaike | Reply

      Result for this hackweek: https://github.com/MosakujiHokuto/gtk-vulkan-demo/

    Similar Projects

    GTK/Libadwaita music player for Subsonic servers by epaolantonio

    Description

    I did switch recently to Navidrome to stream my music library. However, there is no desktop client that I like. I would like to use this Hack Week to build one myself.

    Navidrome uses the Subsonic API, which is also implemented by other music servers.

    This project aims to create a music player compatible with any Subsonic-like server.

    Goals

    • Basic navigation
    • Offline support
    • Lyrics support
    • Never-ending playlist support (automatically queue similar songs when a playlist ends)
    • Responsive UI using libadwaita widgtes

    Resources

    • https://www.navidrome.org/
    • https://www.subsonic.org/pages/api.jsp
    • https://gnome.pages.gitlab.gnome.org/libadwaita/


    x64id: An x86/x64 instruction disassembler by m.crivellari

    Description

    This is an old side project. An x86/x64 machine code decoder. It is useful to get instructions' length and identify each of its fields.

    Example:

    C7 85 68 FF FF FF 00 00 00 00

    This is the instruction:

    MOV DWORD PTR SS:[LOCAL.38],0

    What follows are some of the information collected by the disassembler, based on the specific instruction:

    RAW bytes (hex): C7 85 68 FF FF FF 00 00 00 00
    Instr. length: 10
    Print instruction fields:
            Located Prefixes 0:
    
            OP: 0xC7
            mod_reg_rm: 0x85
            disp (4): 0xFFFFFF68
            Iimm: 0x0
    

    Lacks the mnemonic representation: from the previous machine code is not able to produce the "MOV..." instruction, for example.

    Goals

    The goal is almost easy: partially implement the mnemonic representation. I have already started during the weekend, likely tomorrow I will push the branch!

    Resources

    Progress

    Let's consider this example:

    [...other bytes...] 43 89 44 B5 00 01 00 [...other bytes...]
    


    Port OTPClient to GTK >= 4.18 by pstivanin

    Project Description

    OTPClient is currently using GTK3 and cannot easily be ported to GTK4. Since GTK4 came out, there have been quite some big changes. Also, there are now some new deprecation that will take effect with GTK5 (and are active starting from 4.10 as warnings), so I need to think ahead and port OTPClient without using any of those deprecated features.

    Goal for this Hackweek

    • fix the last 3 opened issues (https://github.com/paolostivanin/OTPClient/issues/402, https://github.com/paolostivanin/OTPClient/issues/404, https://github.com/paolostivanin/OTPClient/issues/406) and release a new version
    • continue the rewrite from where we left last year
    • if possible, finally close this 6 years old issue: https://github.com/paolostivanin/OTPClient/issues/123


    Add a machine-readable output to dmidecode by jdelvare

    Description

    There have been repeated requests for a machine-friendly dmidecode output over the last decade. During Hack Week 19, 5 years ago, I prepared the code to support alternative output formats, but didn't have the time to go further. Last year, Jiri Hnidek from Red Hat Linux posted a proof-of-concept implementation to add JSON output support. This is a fairly large pull request which needs to be carefully reviewed and tested.

    Goals

    Review Jiri's work and provide constructive feedback. Merge the code if acceptable. Evaluate the costs and benefits of using a library such as json-c.


    Improve the picotm Transaction Manager by tdz

    Picotm is a system-level transaction manager. It provides transactional semantics to low-level C operations, such as

    • memory access,
    • modifying data structures,
    • (some) file I/O, and
    • common interfaces from the C Standard Library and POSIX.

    Picotm also handles error detection and recovery for all it's functionality. It's fully modular, so new functionality can be added.

    For the Hackweek, I want to dedicate some time to picotm. I want to finish some of the refactoring work that I have been working on. If there's time left, I'd like to investigate two-phase commits and how to support them in picotm.

    Picotm is available at http://picotm.org/.


    pudc - A PID 1 process that barks to the internet by mssola

    Description

    As a fun exercise in order to dig deeper into the Linux kernel, its interfaces, the RISC-V architecture, and all the dragons in between; I'm building a blog site cooked like this:

    • The backend is written in a mixture of C and RISC-V assembly.
    • The backend is actually PID1 (for real, not within a container).
    • We poll and parse incoming HTTP requests ourselves.
    • The frontend is a mere HTML page with htmx.

    The project is meant to be Linux-specific, so I'm going to use io_uring, pidfs, namespaces, and Linux-specific features in order to drive all of this.

    I'm open for suggestions and so on, but this is meant to be a solo project, as this is more of a learning exercise for me than anything else.

    Goals

    • Have a better understanding of different Linux features from user space down to the kernel internals.
    • Most importantly: have fun.

    Resources