The Sims 2 in Wine only displays blue screen on Nvidia 396.24 but runs fine on 390.59 with GTX 970

The Sims 2 runs in Wine with a patched version available on the Wine AppDB or with an installer from Lutris. But when running the 396.24 driver, the game only displays a blue screen. It plays audio and can be interacted with, but nothing visually works. When using the 390xx branch, the game runs fine.

In wine appdb, I see Sims 2’s run level is gargage,so it is not a wine game in linux.

Scroll down and read the “The game is playable by patching Wine (again)” section:

Further, the Wine AppDB does not allow you to report tests using patched versions of Wine, which is why the run rating is Garbage. To test yourself, the game is easily installable by using Lutris, provided you have a copy on Origin:

Sorry for my mistake. I’ve read the comments and know that it is playable by a patched wine,But I think we should submit a bug report to wine developer.

A friend and I tested this extensively when the game wouldn’t work for me but it would for him until he got a 1070. We both experienced the same issue on the 396 driver but not when we started using the 390 driver branch. This also only seems to happen on the 9xx and 10xx series cards. I doubt this is a Wine bug.

I say We should submit a bug report because only with that patch the game can be playable,not for the driver.

It already has a bug report #8051 and it won’t be fixed by Wine devs as the game has reached EOL and creating a fix that could be submitted to the main branch would require months to make. The only way this game is going to be playable under Linux ever is using that patch. And the reason it doesn’t work anymore under 396 is that the patched wines requests 1024 vertex shader register, unlike regular wine which has it hardcoded to 256. Running it with Winedebug option shows these error lines pop up:

C6020: Constant register limit exceeded at pos_fixup; more than 1024 registers needed to compile program

and then this line gets printed again and again

nvidia 396 GL_INVALID_OPERATION error generated.

The game starts, but its window is empty and is filled with one color.
This problem nor these errors do not appear in nvidia-390.
I am pretty other applications, even native ones could use those values too, and with 396 they would be broken too.

I really don’t get why it says that it needs more than 1024 too, as it requires exactly 1024.

IIRC, the shader compiler or similar has been ‘optimized’, there’s an environment variable to return it to the previous one which I can’t find in this forum (aplattner told about it). This would be a temporary workaround, though anyway since the old code is about to be removed in a future driver version. So the message ‘more than 1024’ is the important info, I think. The 1024 registers that are hardcoded in that patch simply need to be set to a higher value I suspect.
Edit: I found the post and it wasn’t about shaders compiler but the composition pipeline, so I misremembered.

Can you link that post please? Would be exteremely grateful, maybe I could find something else in there.

Upping registers to 2048 did not help. It still prints the same line

C6020: Constant register limit exceeded at pos_fixup; more than 1024 registers needed to compile program

Should be irrelevant since it is about Vulkan and I couldn’t find the original forum post:
Edit: obviously, you knew that:
Edit2: the composition pipeline was changed in 390:

Is there any way I can adress this issue with NVidia? I feel like this forum post is just going to disappear and be forgotten and the issue will go into next stable driver release without being ever solved.

This issue is still present in 396.45.