Hi,
I intend to participate in the Google Summer of Code (again), so I'd like to bounce some ideas off of you guys again. (I don't know why; I'll probably end up doing an extension of last year's project that I did for LLVM. But just in case...) I know that students are supposed to start submitting their proposals tomorrow, but better late than never, I guess. Anyway, here are my ideas (in no particular order):
1. Quartz Driver. I know you guys rejected this last year, but it looks like AJ's been doing some work refactoring the driver interface (at least, the GDI driver interface) lately. I also have some patches to isolate the rest of Wine from winex11. Since the driver itself is so huge, I'll probably end up only doing a piece of it (just enough to run some simple programs like Notepad or Minesweeper). This still depends on my (as yet, unfinished) Deobjectivizer tool so I don't have to code the driver in Objective-C (or resort to Carbon, which Apple seems intent on exorcising from Mac OS X). 2. D3D10 support. Here's an idea that isn't tied to Mac OS X. In Wine, D3D10 support is still in the embryonic stage (i.e. lots of stubs, anything interesting doesn't work quite right). It looks like Henri wants to wait until he finishes exorcising COM from WineD3D to finish implementing D3D10 (probably because COM was too much of a burden for what D3D10 needed from WineD3D, judging from which methods are stubs), so if you want to wait, that's fine. If I do take this on, my goal will probably be to get the game "Civilization V" working (at least, partially) in D3D10 mode, because that's the only D3D10 game I happen to own! (If it already works, and I don't know if it does because I haven't gotten around to installing and testing it, then I'll try to make it work better.) 3. Message-mode pipes. I think we can use the sendmsg(2) and recvmsg(2) syscalls to implement this on top of Unix-domain sockets. Then again, I suspect that this was one of the first things AJ thought of--and he hasn't been able to figure out how to do it yet! I have some experience writing Mac OS X kernel extensions (I wrote the SCSI kexts that Wine on Mac uses), and even a little experience writing Linux modules, so that might help with that. I would like to avoid a kernel module, if possible, though. (It's just one more thing that users have to install to make the system work...)
What do you think?
Chip