Vitaliy Margolen wrote:
As discussed in bug 11584 this Preload is wrong and should be removed.
dlls/wined3d/context.c | 7 ------- 1 files changed, 0 insertions(+), 7 deletions(-)
BTW this is still not enough to fix all the problems. There are few more preloads that make Psychonauts crash. So I think that whole idea of using preload in the context switch is not right. Or activating context in texture pre-loading is wrong.
Can some one familiar with this code take a closer look? This is basic functionality that should be working in 1.0
Vitaliy.
The whole surface / texture code is quite tricky because of various reasons. First of I have the feeling various parts are still NIH and old (and perhaps not doing what it was originally intended for0. Another big source of troubles is that a bunch of different GL extensions are used (FBO, PBO, texture rectangle ..) in order to achieve certain effects or to improve performance. This causes various games to behave differently on different cards and because drivers aren't bug free, you can have different bugs while the same GL extensions are offered. All in all a hell.
I haven't dealt with much of the code recently but I tried to move common functionality in small functions to make the code more readable and easier to maintain.
Just removing preloads and so isn't an option I think. I think the best thing would be to carefully review the code and to see what a function should be doing and make the code easier and better. Right now what is a fix for game 1 is a regression for game 2. I have seen this a couple of times right now where I fixed some large bugs but which exposed other issues.
The main issue right now is that the code freeze is near and this really isn't anything trivial and you can't write test cases for it. Perhaps native wined3d test apps could be employed but as I said there are dozens of different codepaths which can be entered due to differences in GL features.
Regards, Roderick