iXit / wine-nine-standalone

Build Gallium Nine support on top of an existing WINE installation
GNU Lesser General Public License v2.1
273 stars 23 forks source link

black rendering in multiple apps with r300 driver #134

Closed ondracka closed 2 years ago

ondracka commented 2 years ago

I've been looking into r300 driver nine problems (with the R5xx generation cards) for some time. So far I managed to to somehow relate it to the vertex shaders (some r300-supported cards don't have hardware vertex shading support, so the driver can switch between hardware and the draw module, and with draw module the situation is a bit better). Now I finally found an app that renders at least something and by looking at the differences between the draw calls that actually render something to the framebuffer and the draws that do not, one notable difference is that the vertex shaders used in the working draws are not using any constants. So as far as I can say, as soon as the shader needs SetVertexShaderConstantF there is no visible rendering, so my current guess is we somehow fail to propagate the constants to the shaders.

I'm quite sure this is not nine fault, I'm just looking for some clues. Now the question is, assuming the above analysis is correct (I have almost no knowledge of nine and d3d), what is nine doing differently (because this obviously works with OpenGL) and therefore what I need to fix in the driver?

ondracka commented 2 years ago

BTW I can make it work if I revert mesa commit 6d86292f8acd96c3ac4f6e7c52c9f66475953790

ondracka commented 2 years ago

It looks like we don't set PIPE_BIND_CONSTANT_BUFFER for const_uploader. I'll send a patch. Closing here as this is driver bug...

axeldavy commented 2 years ago

Thanks for investigating !