Am Freitag 12 Januar 2007 20:06 schrieb Christoph Bumiller:
Stefan Dösinger wrote:
We will need software shaders for a correct implementation of IWineD3DDevice::ProcessVertices. It supports Vertex shaders, but I don't really think OpenGL feedback mode is what we want here.
Maybe we should remove it for now, but keep the code somewhere(in the wiki maybe). If someone is extra-ambitious we can do something like Softwire/SwiftShader does. But I think ProcessVertices is a good oportunity to verify our vertex shader implementation.
Sounds fun *g* ... I thought of generating Intel assembly code from the vertex shader bytecode on the fly, just like GLSL and ARB shaders are generated, using primarily SSE for doing the floating point computations (in situations where it brings an advantage), and directly referencing the memory at IWineD3DVertexShaderImpl->data,input,output (load constants, input data, store temporary values, store output data). Would something like that even be accepted in wine ?
This is precicely the best way to do implement software shaders, if I understood things correctly, and this is what SoftWire / SwiftShader does. SoftWire is an open source project(C++), Transgaming hired its developer and development went on in a propritary way and is now known as SwiftShader. No idea if SwiftShader ever had any practical use though. It is a Software D3D rasterizer that is said to deliver approximately the performance of Intel integrated cards.