Hi there,
I'm writing to discuss my project proposal for upcoming Google Summer of Code. I was recently playing with Wine, looking around in the code and searching through Wine bugzilla. As a result I found out that there is still a quite number of functions missing in Wine's D3DX implementation. However, some of them are probably not used much in a real software. For example, the mostly unimplemented ID3DXSkinInfo interface seems to be not used frequently. In this email I would like to present things which I would like to implement. I hope that implementation of this functions, or at least some of them, could improve Wine compatibility with a few real applications.
I would like to implement the following things: * Implement D3DXCreateRenderToSurface function and ID3DXRenderToSurface interface. * Finish the implementation of ID3DXFont, particularly ID3DXFont::DrawTextA and ID3DXFont::DrawTextW functions. * Implement D3DXCreateCubeTextureFrom* and D3DXCreateVolumeTextureFrom* functions. * Add support for DDS file format in D3DXGetImageInfoFrom* functions. I think I could also implement a few missing functions in ID3DXConstantTable interface, as a bonus task.
I'm looking forward for a feedback. If you find any D3DX's function more important than functions enumerated by me, please let me know. I'm also looking for applications with heavy usage of D3DX dlls, especially applications which are using unimplemented or partially implemented functions (yes, I'm aware about http://wiki.winehq.org/DirectX-D3DX9).
Cheers, Józef Kucia
Hi Józef,
There are some work already done by Tony Wasserka which didn't get in git: http://repo.or.cz/w/wine/d3dx9TW.git
DDS support has been added in this patch: http://repo.or.cz/w/wine/d3dx9TW.git/commitdiff/f7fd4619de1cd0ea3bdf9b2fd019.... I have an updated version and planned to submit it later. FOURCC support is also missing.
There is also some other D3DX9 patches lying around that didn't get in.
You may take a look if you want to be sure not to make something more or less already done.
Bye, Christian
Le 20/03/2012 18:43, Józef Kucia a écrit :
Hi there,
I'm writing to discuss my project proposal for upcoming Google Summer of Code. I was recently playing with Wine, looking around in the code and searching through Wine bugzilla. As a result I found out that there is still a quite number of functions missing in Wine's D3DX implementation. However, some of them are probably not used much in a real software. For example, the mostly unimplemented ID3DXSkinInfo interface seems to be not used frequently. In this email I would like to present things which I would like to implement. I hope that implementation of this functions, or at least some of them, could improve Wine compatibility with a few real applications.
I would like to implement the following things:
- Implement D3DXCreateRenderToSurface function and
ID3DXRenderToSurface interface.
- Finish the implementation of ID3DXFont, particularly
ID3DXFont::DrawTextA and ID3DXFont::DrawTextW functions.
- Implement D3DXCreateCubeTextureFrom* and
D3DXCreateVolumeTextureFrom* functions.
- Add support for DDS file format in D3DXGetImageInfoFrom* functions.
I think I could also implement a few missing functions in ID3DXConstantTable interface, as a bonus task.
I'm looking forward for a feedback. If you find any D3DX's function more important than functions enumerated by me, please let me know. I'm also looking for applications with heavy usage of D3DX dlls, especially applications which are using unimplemented or partially implemented functions (yes, I'm aware about http://wiki.winehq.org/DirectX-D3DX9).
Cheers, Józef Kucia
On Tue, Mar 20, 2012 at 7:12 PM, Christian Costa titan.costa@gmail.com wrote:
Hi Józef,
There are some work already done by Tony Wasserka which didn't get in git: http://repo.or.cz/w/wine/d3dx9TW.git
DDS support has been added in this patch: http://repo.or.cz/w/wine/d3dx9TW.git/commitdiff/f7fd4619de1cd0ea3bdf9b2fd019.... I have an updated version and planned to submit it later. FOURCC support is also missing.
There is also some other D3DX9 patches lying around that didn't get in.
You may take a look if you want to be sure not to make something more or less already done.
Bye, Christian
Good to know. I have to delete DDS support from my list. Are there any other repositories with patches waiting for merging?
On 21 March 2012 00:14, Józef Kucia joseph.kucia@gmail.com wrote:
Good to know. I have to delete DDS support from my list. Are there any other repositories with patches waiting for merging?
I don't think that code is really waiting to be merged, or even going anywhere at all.
Le 21/03/2012 00:22, Henri Verbeet a écrit :
On 21 March 2012 00:14, Józef Kuciajoseph.kucia@gmail.com wrote:
Good to know. I have to delete DDS support from my list. Are there any other repositories with patches waiting for merging?
I don't think that code is really waiting to be merged, or even going anywhere at all.
That's true but maybe some parts may be reused instead of writing something from scratch.
Le 21/03/2012 00:14, Józef Kucia a écrit :
On Tue, Mar 20, 2012 at 7:12 PM, Christian Costatitan.costa@gmail.com wrote:
Hi Józef,
There are some work already done by Tony Wasserka which didn't get in git: http://repo.or.cz/w/wine/d3dx9TW.git
DDS support has been added in this patch: http://repo.or.cz/w/wine/d3dx9TW.git/commitdiff/f7fd4619de1cd0ea3bdf9b2fd019.... I have an updated version and planned to submit it later. FOURCC support is also missing.
There is also some other D3DX9 patches lying around that didn't get in.
You may take a look if you want to be sure not to make something more or less already done.
Bye, Christian
Good to know. I have to delete DDS support from my list. Are there any other repositories with patches waiting for merging?
No other repositories AFAIK but some patches were sent to wine-patches. That may worth checking before implementing from scratch.
Il 20 marzo 2012 19:12, Christian Costa titan.costa@gmail.com ha scritto:
Le 20/03/2012 18:43, Józef Kucia a écrit :
Hi there,
I'm writing to discuss my project proposal for upcoming Google Summer of Code. I was recently playing with Wine, looking around in the code and searching through Wine bugzilla. As a result I found out that there is still a quite number of functions missing in Wine's D3DX implementation. However, some of them are probably not used much in a real software. For example, the mostly unimplemented ID3DXSkinInfo interface seems to be not used frequently. In this email I would like to present things which I would like to implement. I hope that implementation of this functions, or at least some of them, could improve Wine compatibility with a few real applications.
Hi Józef,
There are some work already done by Tony Wasserka which didn't get in git: http://repo.or.cz/w/wine/d3dx9TW.git
Notice, though, that most of that code is not really suitable for inclusion in Wine, needing cleanup or more.
I would like to implement the following things:
- Implement D3DXCreateRenderToSurface function and
ID3DXRenderToSurface interface.
I think that's used quite often by applications and a good idea for GSoC.
- Finish the implementation of ID3DXFont, particularly
ID3DXFont::DrawTextA and ID3DXFont::DrawTextW functions.
There is an implementation of it in the Tony Wasserka's repository Christian mentioned. Anyway, I don't know about the quality or the test coverage of that code, so I guess (re)implementing it may still be okay for GSoC. Having a different implementation to look at may even be a good thing, because otherwise implementing font drawing from scratch is not trivial.
- Implement D3DXCreateCubeTextureFrom* and
D3DXCreateVolumeTextureFrom* functions.
That depends on the DDS file format support, I guess.
- Add support for DDS file format in D3DXGetImageInfoFrom* functions.
DDS support has been added in this patch: http://repo.or.cz/w/wine/d3dx9TW.git/commitdiff/f7fd4619de1cd0ea3bdf9b2fd019.... I have an updated version and planned to submit it later. FOURCC support is also missing.
That's interesting. Are you (Christian) still implementing it as a WIC decoder? I was under the impression that some DDS features (cube/volume textures I guess) aren't really supportable that way.
I think I could also implement a few missing functions in ID3DXConstantTable interface, as a bonus task.
That's fine too. This would probably require more effort about writing good tests and figuring out what the implementation needs to do than actually implementing the functions.
I'm looking forward for a feedback. If you find any D3DX's function more important than functions enumerated by me, please let me know. I'm also looking for applications with heavy usage of D3DX dlls, especially applications which are using unimplemented or partially implemented functions (yes, I'm aware about http://wiki.winehq.org/DirectX-D3DX9).
Hmm, that wiki page doesn't look too up to date. I'd look into bugzilla instead ( http://bugs.winehq.org/buglist.cgi?product=Wine&component=directx-d3dx9&... for example).
There is also some other D3DX9 patches lying around that didn't get in.
You may take a look if you want to be sure not to make something more or less already done.
Some duplication of effort is allowed under GSoC, so this is not a strict requirement. Also, if a patch was submitted but it is not in git, probably that means it wasn't good enough. That said, yeah, having two people independently implement the same thing at the same time is not the best.
Cheers, Matteo.
On Wed, Mar 21, 2012 at 1:04 AM, Matteo Bruni matteo.mystral@gmail.com wrote:
Il 20 marzo 2012 19:12, Christian Costa titan.costa@gmail.com ha scritto:
- Implement D3DXCreateCubeTextureFrom* and
D3DXCreateVolumeTextureFrom* functions.
That depends on the DDS file format support, I guess.
Yes, it could be a part of my GSoC project to add missing support for DDS file format in D3DX9. Anyway, I will know what's missing after seeing Christian's patches.
- Add support for DDS file format in D3DXGetImageInfoFrom* functions.
DDS support has been added in this patch: http://repo.or.cz/w/wine/d3dx9TW.git/commitdiff/f7fd4619de1cd0ea3bdf9b2fd019.... I have an updated version and planned to submit it later. FOURCC support is also missing.
That's interesting. Are you (Christian) still implementing it as a WIC decoder? I was under the impression that some DDS features (cube/volume textures I guess) aren't really supportable that way.
That's right. WIC decoder for DDS is not the best idea. In case of, D3DXGetImageInfoFromFile you need potentially to get the following info from a file: * type of texture: plain texture, cube texture or volume texture * number of mipmaps * depth of volume texture * texture compression format. You're unable to get this information through a WIC decoder interface.
Le 21/03/2012 20:17, Józef Kucia a écrit :
On Wed, Mar 21, 2012 at 1:04 AM, Matteo Brunimatteo.mystral@gmail.com wrote:
Il 20 marzo 2012 19:12, Christian Costatitan.costa@gmail.com ha scritto:
- Implement D3DXCreateCubeTextureFrom* and
D3DXCreateVolumeTextureFrom* functions.
That depends on the DDS file format support, I guess.
Yes, it could be a part of my GSoC project to add missing support for DDS file format in D3DX9. Anyway, I will know what's missing after seeing Christian's patches.
Ok. Fine. That would be good if you work on this. There is at least FOURCC support missing which is annoying. My patch is basically the same as Tony's one with few fixes to make it work. I will send it to you.
- Add support for DDS file format in D3DXGetImageInfoFrom* functions.
DDS support has been added in this patch: http://repo.or.cz/w/wine/d3dx9TW.git/commitdiff/f7fd4619de1cd0ea3bdf9b2fd019.... I have an updated version and planned to submit it later. FOURCC support is also missing.
That's interesting. Are you (Christian) still implementing it as a WIC decoder? I was under the impression that some DDS features (cube/volume textures I guess) aren't really supportable that way.
That's right. WIC decoder for DDS is not the best idea. In case of, D3DXGetImageInfoFromFile you need potentially to get the following info from a file:
- type of texture: plain texture, cube texture or volume texture
- number of mipmaps
- depth of volume texture
- texture compression format.
You're unable to get this information through a WIC decoder interface.
Number of mipmaps seems supported it tony's patch throuh the number of frames.