Wine version > 3.1 poor performance

Open forum for end-user questions about Wine. Before asking questions, check out the Wiki as a first step.
Forum Rules
Locked
Sentinel
Newbie
Newbie
Posts: 1
Joined: Tue May 21, 2019 9:43 am

Wine version > 3.1 poor performance

Post by Sentinel »

Hello everyone,

I've got poor performance on wine version higher than 3.1 in some old 3D games.
I am on intel HD in Core M processor (Linux).
It is not caused by CSMT. I can enable csmt in 3.1 and still have good performance. On wine 3.2 and above I have half FPS count.
Wine 3.2 changelog: https://www.winehq.org/announce/3.2
Is there another option other than csmt which have changed?
It is really a bummer to have to stuck with old version of wine.

Maybe someone else have encounter a similar problem?
User avatar
Bob Wya
Level 12
Level 12
Posts: 3068
Joined: Sat Oct 16, 2010 7:40 pm

Re: Wine version > 3.1 poor performance

Post by Bob Wya »

Sentinel wrote:Hello everyone,

I've got poor performance on wine version higher than 3.1 in some old 3D games.
I am on intel HD in Core M processor (Linux).
...
That's a pretty old / very-low end GPU you've got there.

But anyway, there's a lot going (in the d3d space) between Wine 3.1 and 3.2:

Code: Select all

2936f3f9bb9dc01c595498a821d6adb6775b62cc Release 3.2.
de9ebcff70a41d1600c26734b3b0f2b3935992d2 wined3d: Use renderbuffers when resolving multisample textures with conversion.
10e7f7ca47f77762baa661ee7337087907cb3f1d d3d9/tests: Add basic test for StretchRect() with multisample resources.
4477231ab13dd6f7f3ec743f3e059c3a74a48ce0 d3d9/tests: Add a test for GenerateMipSubLevels().
0d8dc0c0b72a81ef002b2917448c58d77525e6d6 d3d9/tests: Add a test for cube texture mipmap autogeneration.
a0fbbba85e08d51fac014f54c30139103fa167e1 d3d9/tests: Extend autogen_mipmap_test().
280ea40aab59189edc733b7dbee475054055390d d3d9: Introduce a d3d9_texture_cleanup() function.
dd0ea0a61463db83c647a9367ca61e2b69a98eb3 wined3d: Enable the multi-threaded command stream by default.
b5d0cad40d19720d78b32d93b085f396bb5e6aa1 d3d9: Explicitly translate resource map flags.
8a1a94cd200cc5894a2953211ce37d9b7fd02771 d3d8: Explicitly translate resource map flags.
1b3b2b22682ec79bad8a01ad73ba2e25b33308f6 wined3d: Introduce structure for dummy textures.
d9fa6bb6c239aeba48a781ef0526156584032042 wined3d: Create dummy textures for multisample texture targets.
a9e30882310608f6665089bd1803b10094a8ca9e wined3d: Align OpenGL version comments for newer core functions.
6503946fc749434804131681ce70af4631403f35 d3d8/tests: Add test for changing multisample type of implicit swapchain.
5057df1f3e066897cc5978ec3e9f3b594886e862 d3d9: Explicitly translate swap effects.
f0970916704114c2c5e75b589e7c51d2e4ae27ab d3d8: Explicitly translate swap effects.
0cf21e85a531dbdda42b11207be337fc37138421 wined3d: Print a fixme for unimplemented swap effects during swapchain (re)creation.
457617d545708d08974616d6267898e7f034a0d0 d3d9/tests: Extend test_mipmap_gen().
9a13d48e4eddff7708506e72ee3c737131b6a507 wined3d: Get rid of legacy mipmap autogeneration support.
c7ebc8ec3229bbfd2a0d6e0f0c0c02c8ee87e98f wined3d: Update feature check for mipmap generation support.
3d6eb8cf1dc1e509a74f85fd2356c6946372ecc5 d3d9: Handle D3DUSAGE_AUTOGENMIPMAP textures entirely in d3d9.
f08342f5737c2bb3f965059f930e5d9a25ff6268 wined3d: Use the global memory allocation helpers.
4e37d1c01d8c4161f6081ee022ca32b0f44514b6 wined3d: Rename WINED3D_SWAP_EFFECT_FLIP to WINED3D_SWAP_EFFECT_SEQUENTIAL.
16e54c80c8e9eb4f1eb4fcfca04faf187d97acd2 wined3d: Get rid of the WINED3D_SWAP_EFFECT_FLIP fixme in swapchain_gl_present().
02dc04bcc94306f06c6eb2915bef795efa32d7b2 wined3d: Do not implicitly set WINED3D_RESOURCE_ACCESS_MAP for dynamic resources.
7772c4fdbf33507b2262da375b465d4c2cbc316d wined3d: Enforce map access on all resources.
882742e17aabed5d68c7ec554063b8b95299a7bd wined3d: Introduce a WINED3DFMT_FLAG_GEN_MIPMAP flag.
5ceaf934de5e9241e8466a074ac3cab3aaad6dae d3d9: Set WINED3D_RESOURCE_ACCESS_MAP on 2D textures.
29d824d151723c76eb381aef4e5855c6fa936c8a d3d9: Set WINED3D_RESOURCE_ACCESS_MAP on buffers.
ae5d802bda0edc9b1cc1f3410f8d376c4dd072e7 wined3d: Query supported sample counts for multisample textures.
2f42f5c911a0dff865a41af4ad78d2fc5244d1ab wined3d: Implement multisample resolve for typed resources.
53ddba5305b9eb4280214227d8a23703cef77f66 wined3d: Avoid raw blits when resolving multisample textures.
405e25d5b495237eca366252e4fdad1f727e9061 d3d8: Set WINED3D_RESOURCE_ACCESS_MAP on 2D textures.
2cf1db59ee333898e23aa90be6aa522afed154e3 d3d8: Set WINED3D_RESOURCE_ACCESS_MAP on buffers.
b688f6ee34725f2b1e8e699d4d189b0f1da4ebb3 wined3d: Add STATE_BLEND to debug_d3dstate().
220841f33a4b343709802cb94a852730f2d20d82 wined3d: Do not enable GL_ARB_texture_multisample in GLSL.
f37eb6c0def54bef4297f5e44e3acad3aebb5c9d d3d9/tests: Add test for changing multisample type of implicit swapchain.
7517d8c2e45e9c28203c269ea54033a1a31d1254 wined3d: Add support for multisample textures in wined3d_texture_update_desc().
2fd86a17bb73b5e32b5e9e0208a8dd050388f7ce wined3d: Create multisample textures.
11dd0601c5184e58c708d7763b9f55e572d52e1b wined3d: Add registry setting to enable multisample textures.
32e61de2825e1b01ac55195ecdf7b997d587e37a wined3d: Add support for multisample textures in context_dump_fbo_attachment().
7221ccecdd902949aecb67f29e7abf17875dc5b7 wined3d: Avoid guessing texture target if OpenGL 4.5 is available.
a93120c340431e65e44385d94b3420ee60ec24ff wined3d: Explicitly check for dynamic usage in wined3d_texture_use_pbo().
1b7f06acb121fe90dd694ea5508d6050cc3df23c wined3d: Update the depth/stencil resource location for stencil clears as well.
eb83a7c993a3c6f048dc882164c229710460bf63 wined3d: Get rid of wined3d_get_draw_rect().
96432c4cc26dbdd85fd6240b8f2aff425d53351d d3d9: Use wined3d_buffer_create() in d3d9_device_prepare_vertex_buffer().
87f823ad9196a8f26d1ac4272630e73aaae5cd17 wined3d: Simplify shader_calculate_clip_or_cull_distance_mask().
cd5f8f786badfa712aeb097791df86379fbd86b6 wined3d: Fix resinfo for multisample textures.
dec8b87c9450d2d458ed2b005d3b04c6a59f6414 d3d11: Use wined3d blend state objects.
350a757e37965a646128f8600a0eb2c4bca6e20f wined3d: Introduce blend state object.
4b08687757bf036f45aa18e41c6b72345f089d7d d3d8: Use the global memory allocation helpers.
6187de0143d4f27fad330ada8be1196bbda1d654 d3d9: Use wined3d_buffer_create() in vertexbuffer_init().
74490bd9c67a53efcfc3083506b5d52a1d7a01eb d3d8: Use wined3d_buffer_create() in d3d8_device_prepare_vertex_buffer().
5fc8b43c8a2da3408ecdc3010d53c3b6b521ea04 d3d8: Use wined3d_buffer_create() in vertexbuffer_init().
0b92a6fba7a6e60c6ff1a3729a3b21019c2df0ce ddraw: Use wined3d_buffer_create() in d3d_vertex_buffer_create_wined3d_buffer().
31250d6d4daa6a907aa4d595a13f7a1c142d5097 d3d9: Use the global memory allocation helpers.
cbd1aaafa0ff096b037f026a0900337bcb9a45f8 ddraw: Use wined3d_buffer_create() in d3d_execute_buffer_SetExecuteData().
3aafba2b6907e31ac2a6b3a782d5f59024e8f004 ddraw: Use wined3d_buffer_create() in d3d_device_prepare_vertex_buffer().
f181da61a0285dd151926b56c83de062d5006a77 d3d9: Use wined3d_buffer_create() in d3d9_device_prepare_index_buffer().
b5f1d3085f49b57b2d145c04522258bc428133eb wined3d: Factor out wined3d_texture_get_gl_sample_count() function.
7cdf7f56096b97cc4a1e2c5265bf540b845a9e65 wined3d: Add support for multisample texture views.
9ab04c564e1a14348a4b81c2f61744821b65e61e wined3d: Use wined3d_bit_scan() in context_apply_compute_state().
dea7b8890cc9c7c2f2cf74a3974921927bb27bd5 wined3d: Use wined3d_bit_scan() in wined3d_enable_clip_distances().
e8d2febaad934ba64b63dcb46f7257b6a088ec01 wined3d: Introduce wined3d_bit_scan().
86baab093c05f91e836705bdf8ca0cd26c104cb6 d3d9: Use wined3d_buffer_create() in indexbuffer_init().
112579f4ba8e81e5983f01c898a82dc77c7b9ce0 d3d8: Use wined3d_buffer_create() in d3d8_device_prepare_index_buffer().
9801f09b571e3a15f0c1a2fd8780e20390c1da33 d3d8: Use wined3d_buffer_create() in indexbuffer_init().
a3ca7a308afc886af916e459d2a66b9936c2ee7f ddraw: Use wined3d_buffer_create() in d3d_execute_buffer_execute().
89eaa4aa37c111bccbc17557ec0e13fdcd70100e wined3d: Do not validate texture type in resolve_depth_buffer().
f2e614b1f898de74276bef8a612420b6fb2d5b5d wined3d: Implement ld2dms instruction.
780ec0c1f932476c9a33cac8aa6adf78b74c2b28 wined3d: Add support for multisample samplers.
fea8cf8b36846fbf173f31fce2f82499f92f54a5 wined3d: Add ARB_texture_storage_multisample extension.
416f8d2e864e96152b470d9bf6b0bc40d13fd1f2 wined3d: Add ARB_texture_multisample extension.
2e027f866825f7fb6a69f90c88e95e3bfbc5f6dd ddraw: Use wined3d_buffer_create() in d3d_device_prepare_index_buffer().
c0f92bd318cf336a0182f36db55b1bd277aafeda wined3d: Implement wined3d_buffer_create_ib() on top of wined3d_buffer_create().
1377e7a6088b269bb7a90717a70e02d0a8d204d8 wined3d: Implement wined3d_buffer_create_vb() on top of wined3d_buffer_create().
8623bd3b6b03b298866ad25ae5f02ae40c95ead7 wined3d: Replace the CPU access flags in struct wined3d_buffer_desc with resource access flags.
f9181daa1ddc2c10d3b6ddd4610bc1421cfd0f42 Release 3.1.
So I'm afraid you'll need to do a Wine regression test... To see what change (probably one of the listed commits - see above), is now affecting your gaming performance...
See: WineHQ Wiki: Regression Testing.

There may not be much than can be done about this now. Since Wine 3.x is now obsolete, and no longer actively being developed. The Wine d3d->opengl translation code may assume that the end-user has a more capable GPU...

Bob
Locked