Open YeldhamDev opened 6 years ago
Well it doesn't hurt per se, the code is self contained in platform/haiku
, so even if not fully functional in 3.x, it doesn't impact other platforms nor the maintainability of the engine as a whole.
Of course if there's no interest in the platform from the community, we can just drop it, but otherwise the current code is just waiting for a Haiku dev to do the little changes needed for it to compile. (CC @Max-Might @jay3d).
Have to agree with both of you. Firstly, although Haiku is still in development, the last release was in Nov 2012, that almost 6 years now and it's indeed an extremely nieche OS, so maintaining it is not something worth someones time if I may say it so.
However, if it does not affect the overall maintainability or the other platforms, then why cancel it? If someone really likes Haiku and decides to maintain Godot for the whole Haiku community then great! At least a little more people get access to the engine then :)
Having useless code laying around never leads to good things, even if isolated.
Having useless code laying around never leads to good things, even if isolated.
Yeah but in that case it cannot lead to bad things either, due to it being isolated. It just takes disk space :)
But yeah, if no contributor shows interest in the platform in the coming months, I might drop it before the 3.1 release. The code would still be available in the git history/the 3.0 branch if needed to make a comeback in the future.
While I don't have the time to update the port at the moment I just wanted to mention that Haiku is under active development. There are people using it as their main OS and the devs are gearing up for a beta release to be released soon. They are also participating in this year's GSoC edition.
Hi,
Haiku and Godot devs met at RMLL and we have updated the sources to get it building again. Here is a patch against the 3.0.5 release: https://raw.githubusercontent.com/haikuports/haikuports/7b02219735ac564f073c1e1861b9d5b83c8e0946/dev-games/godot/patches/godot-3.0.5.patchset
Currently it crashes at start for lack of GLSL 3.3 support on Haiku side. I will investigate this but the issue is probably in the Mesa port of Haiku.
Haiku is growing, we need godot there, nowdays it is becoming more popular. Dont remove please, if i can help i will do, but dont remove it please.
Here is a patch against current master branch: https://raw.githubusercontent.com/haikuports/haikuports/495a02b62d4fb5461e0e2cb053dc7b93fd5cec8d/dev-games/godot/patches/godot-3.0.6.patchset
It seems to be running fine but stays at the splash screen forever. The editor never shows up. Help debugging this is appreciated.
@pulkomandy I think it would be nice to get this patch merged in the master branch, even if it doesn't solve the rendering issue yet. At least it makes it possible to compile on Haiku, potentially enabling other Haiku devs to dig further into debugging the issue. Would you be able to make a pull request? (after checking that it rebases and still compiles on current master)
Renaming this issue now that it's clear that we don't intended to drop the Haiku code for the time being. With @pulkomandy's work merged in godotengine/godot#20913 it should now compile on Haiku, and the editor starts fine, but doesn't render properly - fixing that would be the next step.
Just an update from Haiku world. A month ago it finally got to beta stage after like half a decade. So it's not a dead platform. :) Not yet at least.
Now that Godot 3.2's release is around the corner, what's the status on this?
cc @pulkomandy
I don't know, I just helped upstream the existing patches from our packaging system.
I'm currently in the progress of making updated patches, you can find my progress here: https://github.com/CodeforEvolution/godot/tree/haikuFixup/ This is still a WIP as of now...
So, I have a status update: I was able to get a 32bit build working! (Actually, it was a working a while go, I've just been very busy, and I still am sort of). However, after an empty Godot window opens up, and in the stdio output, it's printed that the OpenGL context is set up, the application crashes on a SEGFAULT. Unfortunately, the system I have doesn't have enough RAM to set up a debugging harness and I was most likely going to call on the Haiku community to try to build Godot on both 32bit and 64bit Haiku. (I'll do this in a separate place, I also need to give specific instructions on how to build Godot) Either way, I saw that a Vulkan implementing branch was merged in, and was wondering if it's ok for Haiku to solely utilize GLES2. (We have yet to get Vulkan through MESA working at this point)
@CodeforEvolution Great news!
It's OK to support only GLES2 in the master
branch for now, but you won't be able to do so right away. Following the merge of the Vulkan port, the GLES2 backend is disabled, and it needs to be ported to the new rendering architecture, which will take some time. Once it's ported, you can indeed use it as the only supported backend on Haiku if there's no Vulkan support.
In the meantime, I would suggest that you focus on getting things working on the 3.2
branch, where there are working GLES2 and GLES3 backends. Relevant platform fixes can then be forward ported to master
.
That’s good to hear! I’ll rebase my patches for now on 3.2.
In addition, to provide a clean experience to a person wanting to build Godot for Haiku (in other words, typing in “scons” is enough to build Godot for Haiku).
UPDATE: More recently, I was able to upstream some Haiku related patches for miniupnp, @akien-mga I was wondering how I’d be able to help sync your version of miniupnp with the upstream version.
Hello! I'm sorry that this update has taken a while, though I have been working on and off on this fixup for the Haiku operating system. I have been implementing lots of new functionality related to the OS class, touching up some Input related handling, and reworking the OpenGL context system.
Here's what needs to be done still:
What I believe could be done for later:
@akien-mga, if there is anything else I should consider implementing, please let me know! :)
My current work is available at https://github.com/CodeforEvolution/godot/tree/haikuFixup3.2. Have a good day!
Hello again!
I just wanted to give a progress report for my Haiku efforts. Sadly, this is more of a call for help than a report.
For quite some time, I've been able to get Godot to the splash screen, and then Godot freezes up, and nothing else happens...
I got a bunch of information posted to stdio (with some of my own prints too): Main: Initialize CORE Main: Initialize Globals Main: Parse CMDLine Godot Engine v3.2.2.beta.custom_build.acc9ac380 - https://godotengine.org WARNING: ContextGL_Haiku: Construct GL context At: platform/haiku/context_gl_haiku.cpp:36. GalliumContext: CreateScreen: Using llvmpipe (LLVM 7.0, 128 bits) driver. WARNING: initialize: Start up GL context At: platform/haiku/context_gl_haiku.cpp:51. WARNING: set_use_vsync: Changed vertical sync mode for GL context At: platform/haiku/context_gl_haiku.cpp:90. Using GLES2 video driver OpenGL ES 2.0 Renderer: Gallium 0.4 on llvmpipe (LLVM 7.0, 128 bits) OpenGL ES 2.0 Batching: ON OPTIONS max_join_item_commands 16 colored_vertex_format_threshold 0.25 batch_buffer_size 16384 light_scissor_area_threshold 1 item_reordering_lookahead 4 light_max_join_items 32 single_rect_fallback False debug_flash False diagnose_frame False
Main: Setup Logo Main: Load Remaps Main: Create bootsplash Main: ClearColor Main: Image WARNING: swap_buffers: Swap Buffers for GL context At: platform/haiku/context_gl_haiku.cpp:72. Main: DCC Main: END Main: Load Remaps Main: Load Scene Types Main: Load Modules, Physics, Drivers, Scripts Main: Load Translations CORE API HASH: 4848997042847609783 EDITOR API HASH: 10878072942132320958 Main: Done Loading resource: /boot/home/config/settings/godot/editor_settings-3.tres EditorSettings: Load OK! EditorSettings: Save OK! Loaded builtin certs WARNING: set_main_loop: Setup Main Loop! At: platform/haiku/os_haiku.cpp:207.
But nothing printed seems too useful, does anyone have any idea on what this could be? Any possible debugging strategies that I could try besides step by step debugging?
I'm sorry to be a bother, though @akien-mga, any ideas? ^^^^^^^
But nothing printed seems too useful, does anyone have any idea on what this could be? Any possible debugging strategies that I could try besides step by step debugging?
Step by step debugging sounds like the best option to debug further here, and see where it's stuck at.
Ah, I have found the problem! I wasn’t calling “Main::iteration” anywhere, which is your common “one line fix” sort of problem. :)
For the reference, I'm moving the Haiku platform port to a dedicated repo (and thus this issue with it): https://github.com/godotengine/godot-haiku-platform
This removes the maintenance burden of having to propagate any porting changes to platform/haiku
, without really being able to test if they compile or work, and it should make it easier to have the Haiku port following its own delayed release schedule to match changes in Godot code.
@CodeforEvolution I'm still very interested in the work you're doing to fix the Haiku port for 3.2
. It should now be PR'ed to https://github.com/godotengine/godot-haiku-platform, and once we're happy with the code we can redo the 3.2.x
tags to point to the working commit for Haiku.
This code could then be used together with the matching Godot code to package an official Haiku port and templates.
@akien-mga I understand the decision, and thank you for hosting this repository! (I actually had to recently rebase the Haiku code due to formatting changes made across the engine code, etc) Otherwise, I'm getting pretty close to having a good, working product, and should have a pull request for 3.2 (hopefully) soon! At this point, I'm trying to improve the engine's performance on Haiku.
Good afternoon @akien-mga! I apologize that I have been inactive for quite some time, though I feel I just needed a bit of a break before continuing. The only problem is that I realized my patches not only cover stuff in the "platform/haiku" folder, but also other buildsystem files, files to do with the OS_Unix class, etc. Should I try to separate these changes into separate commits and create a pull request over at the main Godot repository for everything that does not apply to the "platform/haiku" folder? Or is there something else I should try?
If that's the changes from https://github.com/godotengine/godot/compare/3.2...CodeforEvolution:haikuFixup3.2, I guess that's fine, we can get them merged one way or another in the main Godot repository.
Some of them might be avoidable, but we can discuss them directly in the relevant godotengine/godot pull request(s).
That sounds good! I'll make sure to explain the reasoning behind some changes in more detail (Haiku is a whole different beast after all), and of course, I'll also clean up my mess of commits. (I have a lot of squashing to do!)
In other news from the Haiku community: One of the Haiku community members added syntax highlighting for GDScript to one of our native coding editors: https://github.com/KapiX/Koder/pull/125 In addition, this community member is also currently designing a Haiku-like vector icon for Godot. (We don't use SVGs or PNGs for our icons. Instead, we have a special "Haiku Vector Icon Format": https://en.wikipedia.org/wiki/Haiku_Vector_Icon_Format).
Good day @akien-mga! I have one other question as I wrap things up. With this pull request, I have implemented lots of new platform specific features to the Haiku backend. However, I was wondering if, besides the simple command line tests, if there was a test suite for testing the functionality of “operating system specific classes” such as the OS , AudioDriver, and MidiDriver classes. Or, should I just try to search around the Godot template project library for example projects?
Hey @akien-mga. It's the first day of September, and I believe that I won't be able to submit a finalized pull request with the little time that I have... I really appreciate the patience you have given to me and the Haiku community, and I thank you for that! I don't believe this is the end of the road however. I believe someone else from the Haiku community could pickup my code and put the finishing touches on it. I may even comeback one day to assist, though I can't predict anything.
For those interested, my code base is currently based upon a few commits after the 3.2.2 release and is functional, though slow and a bit buggy. There are currently performance problems (even with the LLVM rasterizer from MESA, I'm achieving only 11 FPS on average), a few crashes (there's a small crash in the MIDIDriver, and there are other issues with how Haiku handles multi-threading), and some platform specific features aren't handled correctly (window handling specifically).
What I have been able to accomplish is here (all those crazy commits will need to be squashed together by the way): https://github.com/CodeforEvolution/godot/tree/haikuFixup3.2
I apologize to other Haiku community members, I know it isn't too new for someone to pickup a big project, get going, and then suddenly disappear. I will at least try to offer help when someone tags me, though I can't guarantee that I'll have time to answer.
With that, I hope you all have a good evening!
P.S. @Max-Might, any interest?
What's the status on this? Any plans for 4.0? Or getting it merged to main repo.
Someone had to say this sooner or later, but I think Haiku should go, whatever little of it exists anyways.
It's a extremely niche OS, and the Godot files of it has seen little to no maintenance for it. I don't know the OS can even open the editor at this point.