https://bugs.winehq.org/show_bug.cgi?id=46779
Bug ID: 46779 Summary: OblivionReloaded CompileEffects require ID3DXEffectCompilerImpl_CompileEffect implementation. Product: Wine Version: 4.3 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: directx-d3dx9 Assignee: wine-bugs@winehq.org Reporter: lorenzofer@live.it Distribution: ---
OblivionReloaded 6.5.0 CompileEffects option (needed to recompile provided effects and custom effects) require a working ID3DXEffectCompilerImpl_CompileEffect.
Now with the stub, if the option is activated, all the effects fail to compile silently.
Relevant log:
002f:trace:d3dx:D3DXCreateEffectCompilerFromFileA srcfile "Data\Shaders\OblivionReloaded\Bloom\Bloom.fx.hlsl", defines (nil), include (nil), flags 0, effectcompiler 0x32f290, parseerrors 0x3be3b18. 002f:trace:d3dx:D3DXCreateEffectCompilerFromFileW srcfile L"Data\Shaders\OblivionReloaded\Bloom\Bloom.fx.hlsl", defines (nil), include (nil), flags 0, effectcompiler 0x32f290, parseerrors 0x3be3b18. 002f:trace:d3dx:D3DXCreateEffectCompiler srcdata 0x57f0000, srcdatalen 4086, defines (nil), include (nil), flags 0, compiler 0x32f290, parse_errors 0x3be3b18 002f:trace:d3dx:d3dx9_effect_compiler_init compiler 0x3be4048, data 0x57f0000, data_size 4086, defines (nil), include (nil), eflags 0, error_messages 0x3be3b18. 002f:fixme:d3dx:d3dx9_effect_compiler_init ID3DXEffectCompiler implementation is only a stub. 002f:trace:d3dx:D3DXCreateEffectCompiler Created ID3DXEffectCompiler 0x3be4048 002f:fixme:d3dx:ID3DXEffectCompilerImpl_CompileEffect iface 0x3be4048, flags 0, effect 0x32f28c, error_msgs 0x3be3b18 stub! 002f:trace:d3dx:ID3DXEffectCompilerImpl_Release iface 0x3be4048: Release from 1
https://bugs.winehq.org/show_bug.cgi?id=46779
--- Comment #1 from Lorenzo Ferrillo lorenzofer@live.it --- Created attachment 63807 --> https://bugs.winehq.org/attachment.cgi?id=63807 Implementation for ID3DXEffectCompiler_CompileEffect
My try to implement ID3DXEffectCompiler_CompileEffect.
It allow to compile all Oblivion Reloaded shader.
There are some things that can be improved in the patch, expecially avoiding passing throught the Unicode version of the function
https://bugs.winehq.org/show_bug.cgi?id=46779
Lorenzo Ferrillo lorenzofer@live.it changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #63807|0 |1 is obsolete| |
--- Comment #2 from Lorenzo Ferrillo lorenzofer@live.it --- Created attachment 63814 --> https://bugs.winehq.org/attachment.cgi?id=63814 Working Implementation of ID3DXEffectCompiler_CompileEffect
During rewrite for application to a wine (instead of staging) patch I forgot a small but critical piece of code, in compiler creation. Also fixed a potential memory leak, and null pointer dereference, if the compiler is created directly or from a resource.
https://bugs.winehq.org/show_bug.cgi?id=46779
Alistair Leslie-Hughes leslie_alistair@hotmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |patch
https://bugs.winehq.org/show_bug.cgi?id=46779
pattietreutel katyaberezyaka@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |katyaberezyaka@gmail.com
https://bugs.winehq.org/show_bug.cgi?id=46779
Lorenzo Ferrillo lorenzofer@live.it changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #63814|0 |1 is obsolete| |
--- Comment #3 from Lorenzo Ferrillo lorenzofer@live.it --- Created attachment 65591 --> https://bugs.winehq.org/attachment.cgi?id=65591 ID3DXEffectCompiler partial working implementation with initial tests
Wine 4-18 or 4-19 broke the previous patch, so I reworked it.It also include some tests. However it's still incomplete, but enough for this use case.
Excpet for the tests there isn't much difference. It handle better some failure cases.
It's missing all the baseeffect methods, that probably require a partial compilation of the shader/effect, as implied by documentations and tests, and it will not handle correctly external includes (includes passed to the D3DXCreateEffectCompiler* functions) when passed to non D3DXCreateEffectCompilerFromFile function.
Also to work on wine, it will still require the relevant native d3dcompiler.dll (should be d3dcompiler_47.dll )
https://bugs.winehq.org/show_bug.cgi?id=46779
Lorenzo Ferrillo lorenzofer@live.it changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #65591|0 |1 is obsolete| |
--- Comment #4 from Lorenzo Ferrillo lorenzofer@live.it --- Created attachment 65610 --> https://bugs.winehq.org/attachment.cgi?id=65610 ID3DXEffectCompiler partial working implementation with initial tests
Ok new version for the patch.
I started to use D3DPreprocess to get a self contained HLSL effect, so that ID3DXEffectCompiler partial working implementation with initial tests can close and free the ID3DXInclude internal implementation for file before returing the interface to the caller. This avoid a nasty bug I had when creating two instances of this Include, and opening both. I don't know if this is the supposed beheaviour for this internal includes, it may just be a wine issue. This has still a serious race when creating compilers concurrently (in different threads). However it should be fine for even if creation of compilers and actual effect compilation happen in a "strange interleaving".
Still all the BaseEffect methods and the CompileShader method are unimplemented.
https://bugs.winehq.org/show_bug.cgi?id=46779
Andrey Gusev andrey.goosev@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|0 |1 Status|UNCONFIRMED |NEW Severity|normal |minor
--- Comment #5 from Andrey Gusev andrey.goosev@gmail.com --- Also affects Velvet Assassin.
https://bugs.winehq.org/show_bug.cgi?id=46779
--- Comment #6 from Lorenzo Ferrillo lorenzofer@live.it --- (In reply to Andrey Gusev from comment #5)
Also affects Velvet Assassin.
Can you upload a wine log? To understand if V.A require something more elaborate.
Note the last patch need a rebase to the last git.
https://bugs.winehq.org/show_bug.cgi?id=46779
maniikarabera@protonmail.ch changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |maniikarabera@protonmail.ch
https://bugs.winehq.org/show_bug.cgi?id=46779
Lorenzo Ferrillo lorenzofer@live.it changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #65610|0 |1 is obsolete| |
--- Comment #7 from Lorenzo Ferrillo lorenzofer@live.it --- Created attachment 66677 --> https://bugs.winehq.org/attachment.cgi?id=66677 ID3DXEffectCompiler partial working implementation with initial tests
Rebased for 5.4
Changes: Enable Backward Compatibility mode for d3dx9_xx dlls with xx < d3dx9_36 (as normal ID3DXEffect does)
Pass flags to the D3DCompile functions.
https://bugs.winehq.org/show_bug.cgi?id=46779
Vijay Kamuju infyquest@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |infyquest@gmail.com
--- Comment #8 from Vijay Kamuju infyquest@gmail.com --- Please dont use c++ style comments and send the patch to wine-devel@winehq.org with your Signed-Off-By
https://bugs.winehq.org/show_bug.cgi?id=46779
--- Comment #9 from Lorenzo Ferrillo lorenzofer@live.it --- I belive it isn't still ready to be submitted, for now I'm just updating it when I can, as it seems to reasonably work in this use case (I'd like to test others cases)
Also I don't know how to regulate with the fact it is still require a native d3dcompiler to properly function.
Also what the patch do may be fundamentally different on Windows. I would need to understand on which level the ID3DXEffectCompiler BaseEffect methods work.
I may submit as a request for comment on the wine-devel mailinglist.
https://bugs.winehq.org/show_bug.cgi?id=46779
Gijs Vermeulen gijsvrm@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |andrey.goosev@gmail.com
--- Comment #10 from Gijs Vermeulen gijsvrm@gmail.com --- *** Bug 35137 has been marked as a duplicate of this bug. ***
https://bugs.winehq.org/show_bug.cgi?id=46779
Gijs Vermeulen gijsvrm@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|OblivionReloaded |Multiple applications need |CompileEffects require |ID3DXEffectCompiler::Compil |ID3DXEffectCompilerImpl_Com |eEffect() implementation |pileEffect implementation. |(OblivionReloaded, Hitman: | |Blood Money demo)
https://bugs.winehq.org/show_bug.cgi?id=46779
Gijs Vermeulen gijsvrm@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|Multiple applications need |Multiple applications need |ID3DXEffectCompiler::Compil |ID3DXEffectCompiler::Compil |eEffect() implementation |eEffect() implementation |(OblivionReloaded, Hitman: |(OblivionReloaded, Hitman: |Blood Money demo) |Blood Money demo, Velvet | |Assassin)
https://bugs.winehq.org/show_bug.cgi?id=46779
--- Comment #11 from Andrey Gusev andrey.goosev@gmail.com --- With the patch Tropico 3, Tropico 4 and Velvet Assassin require fx_2_0 bug 37676.
https://bugs.winehq.org/show_bug.cgi?id=46779
Andrey Gusev andrey.goosev@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Blocks| |35213
https://bugs.winehq.org/show_bug.cgi?id=46779
Gijs Vermeulen gijsvrm@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |luis.panadero@gmail.com
--- Comment #12 from Gijs Vermeulen gijsvrm@gmail.com --- *** Bug 46924 has been marked as a duplicate of this bug. ***
https://bugs.winehq.org/show_bug.cgi?id=46779
Gijs Vermeulen gijsvrm@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|Multiple applications need |Multiple applications need |ID3DXEffectCompiler::Compil |ID3DXEffectCompiler::Compil |eEffect() implementation |eEffect() implementation |(OblivionReloaded, Hitman: |(OblivionReloaded, Hitman: |Blood Money demo, Velvet |Blood Money demo, Velvet |Assassin) |Assassin, Sword of the | |Stars: Complete Collection)
https://bugs.winehq.org/show_bug.cgi?id=46779
joaopa jeremielapuree@yahoo.fr changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |jeremielapuree@yahoo.fr
--- Comment #13 from joaopa jeremielapuree@yahoo.fr --- Does the bug still occur with wine-8.6?
https://bugs.winehq.org/show_bug.cgi?id=46779
--- Comment #14 from Lorenzo Ferrillo lorenzofer@live.it --- From what I can see the ID3DXEffectCompiler i still STUB, so yes the bug still is there, recent changes about d3dcompiler could remove the reliance on a native d3dcompiler dll, but I need to test this.
https://bugs.winehq.org/show_bug.cgi?id=46779
--- Comment #15 from Nikolay Sivov bunglehead@gmail.com --- (In reply to Lorenzo Ferrillo from comment #14)
From what I can see the ID3DXEffectCompiler i still STUB, so yes the bug still is there, recent changes about d3dcompiler could remove the reliance on a native d3dcompiler dll, but I need to test this.
It has some functionality in addition to compiling things, native compiler dll won't change that.
https://bugs.winehq.org/show_bug.cgi?id=46779
soredake broaden_acid002@simplelogin.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC|broaden_acid002@simplelogin | |.com |