3D acceleration: I'm working on it

Hello

I’m a developer with good skills in 3D graphics, kernel drivers, assembler, verilog,etc.
I’m working on a project(see details below) of usermode daemon which will run GPU drivers on linux. I do know how GPUs work(primarily AMD ones), I do know how PCI works, I do know how kernel and page tables work, I used GL a lot, and so on.

On the other side, your project needs “3D acceleration support”. My project can be exactly what you want, especially in case of multicore cpus. However, porting my code from linux to haiku may not be a trivial task.

For example, I reimplemented UIO driver, and it must be rewritten again for haiku. My daemon takes pieces of system memory and makes it available to both GPU and client processes. Some efforts may be needed to seamlessly integrate with existing vesa driver. At least tell it: hey, tell me video mode you want, don’t touch this PCI device without using my callbacks until I die, and I’ll give you a buffer in reward.

Another unix-specific task is communication with client process: I use unix sockets to pass a file descriptor to client. Workaround is needed!

Details: actually, my project is "opensource massively-non-parallel processor. It will be something like a lot of fused cpus on a chip with specialized units like hash map accelerators, atomic op processors, and texture io units. I consider it as sort of GPU. My gpu will need a driver, and that’s why I started learning about linux dri, and my findings were the reason why I decided to move the whole stuff to a separate daemon: undebuggable overcomplicated legacy shit.
Now I’m working on moving all drivers from kernel space to user space. Modern CPUs have lot’s of cores and games do not utilize them all. We can bind our daemon to a core(N-1th), boost it’s priority. As for interoperation with drivers - i do know how drivers work and I’m sure I can reuse existing Mesa code once for all GPUs. And no more bumblebee or optimus!

12 Likes

Very welcome to do work on this difficult part…

1 Like

I’m going to implement this in linux.

But in case of haiku, I’ll need help to replace my linux driver and with IPC.

1 Like

It’s very possible that I don’t need unix sockets. maybe in haiku there is an option to map memory into client process “directly”.

Btw: I’m not a student. I’m not participating in GSOC. I just came and said: I’m going to do this stuff.

2 Likes

Ah why would you develop such a thing for Linux anyway?

1 Like

Where can i follow your git :slight_smile: you can go to the facebook group too there you can keep us updated too.

2 Likes

Seems like this is the reason.

  1. I use linux. at least, now.

  2. In linux, 3D is already implemented. I can test my impementation in linux to detect performance regressions.It makes no sense to compare performance between gpud(this is the name of my daemon) in haiku and “normal” linux.

1 Like

You have any github? need any help there?

2 Likes

Awesome, best of luck with your project, :smiley:

1 Like

So you`re going to do 3d drivers for AMD GPU, do I understand correctly?

1 Like

When I understand this correctly then you make the “driver host” but not the “drivers” themselves? You said you “run GPU drivers” on linux so I concluded this. I’m just trying to put your project into a relation to MESA/AMDGPU and DRI/Wayland/WhateNotElse.

1 Like

This is a pretty cool project, I applaud the scope! I would be interested in writing some sample programs against it as you bring up functionality. Would this be a back end to OpenGL?