Buffers could be used with 'shared' and 'single' modifiers. There is a bit more work left to do to support this - 'shared' needs a compiler flag to enable child effects to be useful, and 'single' is not a keyword.
--
v2: vkd3d-shader/hlsl: Allow modifiers on buffer declarations.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/666
My hardware is Ryzen 7 4700u with the integrated graphics
Flatout (Direct3D 9): 20 fps (renders correctly)
Unigine Heaven (OpenGL): ~17 fps (renders correctly)
Unigine Heaven (Direct3D 9): 20-30 fps (renders correctly)
Unigine Heaven (Direct3D 11): 20-30 fps as well (renders correctly)
Elder Scrolls IV (Direct3D 9): 20 fps (renders correctly)
BeamNG Tech Demo 0.3 (Direct3D 9): 2 fps (renders correctly, but still runs poorly)
Massive step up from getting 2 fps across many wined3d games, but it's still pretty bad, and sometimes runs worse than the original code
Unfortunately, we lose the ability to get lucky with the mapping just happening to be in the 32 bit range.
--
v6: opengl32: speed up wow64 mapping.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5145