https://bugs.winehq.org/show_bug.cgi?id=44052
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |focht@gmx.net Summary|Temple+ does not run due to |Multiple applications and |missing D2D device and |games fail to run due to |device context and multiple |missing D2D device and |API stubs |device context and multiple | |API stubs (Temple+, | |DJKaty.com 'Simple2D' | |examples) Keywords| |download Component|-unknown |d2d URL| |http://files.djkaty.com/sof | |tware/Simple2D/Simple2DSetu | |p-1.13.exe
--- Comment #38 from Anastasius Focht focht@gmx.net --- Hello folks,
another set of apps/examples requiring this:
http://files.djkaty.com/software/Simple2D/
Adding this as download link, it comes with source and prebuilt examples.
Every example apps crashes the same way.
--- snip --- $ wd /home/focht/.wine/drive_c/Program Files (x86)/DJKaty.com/Simple2D/examples
$ file *.exe AnimationAndGlyphMetricsDemo.exe: PE32 executable (GUI) Intel 80386, for MS Windows AnimationChainDemo.exe: PE32 executable (GUI) Intel 80386, for MS Windows AsyncHTTPDemo.exe: PE32 executable (GUI) Intel 80386, for MS Windows BitmapBrushDemo.exe: PE32 executable (GUI) Intel 80386, for MS Windows BitmapDemo.exe: PE32 executable (GUI) Intel 80386, for MS Windows BoundingBoxDemo.exe: PE32 executable (GUI) Intel 80386, for MS Windows CollisionDemo1.exe: PE32 executable (GUI) Intel 80386, for MS Windows CollisionDemo2.exe: PE32 executable (GUI) Intel 80386, for MS Windows CollisionDemo2-Optimized.exe: PE32 executable (GUI) Intel 80386, for MS Windows CollisionDemo3.exe: PE32 executable (GUI) Intel 80386, for MS Windows GamepadCallbackDemo.exe: PE32 executable (GUI) Intel 80386, for MS Windows GamepadMappingDemo.exe: PE32 executable (GUI) Intel 80386, for MS Windows GamepadTextDemo.exe: PE32 executable (console) Intel 80386, for MS Windows GamepadWinMsgDemo.exe: PE32 executable (GUI) Intel 80386, for MS Windows LinearGradientDemo.exe: PE32 executable (GUI) Intel 80386, for MS Windows LinearMovementDemo.exe: PE32 executable (GUI) Intel 80386, for MS Windows MSDN-Direct2D-Demo.exe: PE32 executable (GUI) Intel 80386, for MS Windows PathGeometryDemo.exe: PE32 executable (GUI) Intel 80386, for MS Windows SceneGraphDemo.exe: PE32 executable (GUI) Intel 80386, for MS Windows Simple3DBoxDemo.exe: PE32 executable (GUI) Intel 80386, for MS Windows Simple3DBoxSceneDemo.exe: PE32 executable (GUI) Intel 80386, for MS Windows Simple3DInitDemo.exe: PE32 executable (GUI) Intel 80386, for MS Windows SkinnedDialogDemo.exe: PE32 executable (GUI) Intel 80386, for MS Windows SliderDemo.exe: PE32 executable (GUI) Intel 80386, for MS Windows SwingingRopeDemo.exe: PE32 executable (GUI) Intel 80386, for MS Windows TextInputDemo.exe: PE32 executable (GUI) Intel 80386, for MS Windows
$ wine ./SliderDemo.exe ... 0009:fixme:d2d:d2d_device_CreateDeviceContext iface 0x17a298, options 0, context 0x33fc44 stub! wine: Unhandled page fault on read access to 0x00000000 at address 0x40cbb6 (thread 0009), starting debugger... --- snip ---
https://source.winehq.org/git/wine.git/blob/HEAD:/dlls/d2d1/device.c#l3679
--- snip --- 3679 static HRESULT WINAPI d2d_device_CreateDeviceContext(ID2D1Device *iface, D2D1_DEVICE_CONTEXT_OPTIONS options, 3680 ID2D1DeviceContext **context) 3681 { 3682 FIXME("iface %p, options %#x, context %p stub!\n", iface, options, context); 3683 3684 return E_NOTIMPL; 3685 } --- snip ---
Typical app code:
--- snip --- // Create a render target and device-specific resources HRESULT Simple2D::CreateDeviceResources() { // ================================================================================= // Direct2D 1.1 version // =================================================================================
// Window-size-dependent resources SafeRelease(&Direct2DBackBuffer); SafeRelease(&Screen);
// Create 2D device context (replaces ID2D1RenderTarget sub-classes) Direct2DDevice->CreateDeviceContext(D2D1_DEVICE_CONTEXT_OPTIONS_NONE, &Screen);
// Get the back buffer as an IDXGISurface (Direct2D doesn't accept an ID3D11Texture2D directly as a render target) IDXGISurface *dxgiBackBuffer; DXGISwapChain->GetBuffer(0, IID_PPV_ARGS(&dxgiBackBuffer));
// Get screen DPI FLOAT dpiX, dpiY; Direct2D->GetDesktopDpi(&dpiX, &dpiY);
// Create a Direct2D surface (bitmap) linked to the Direct3D texture back buffer via the DXGI back buffer D2D1_BITMAP_PROPERTIES1 bitmapProperties = D2D1::BitmapProperties1(D2D1_BITMAP_OPTIONS_TARGET | D2D1_BITMAP_OPTIONS_CANNOT_DRAW, D2D1::PixelFormat(DXGI_FORMAT_B8G8R8A8_UNORM, D2D1_ALPHA_MODE_IGNORE), dpiX, dpiY);
Screen->CreateBitmapFromDxgiSurface(dxgiBackBuffer, &bitmapProperties, &Direct2DBackBuffer);
// Set surface as render target in Direct2D device context Screen->SetTarget(Direct2DBackBuffer);
// Direct3D-specific initialization if (Enable3D) HRSilentReturnOnFail(CreateDirect3DResources());
// Clean up SafeRelease(&dxgiBackBuffer);
// ================================================================================= // End of Direct2D 1.1 version // =================================================================================
// Use render target to create resources if (!SetupResources()) HRReturnOnFail( E_FAIL, "Could not set up the application resources");
return S_OK; } --- snip ---
Please avoid these meta-bugs in future but focus on one functionality/interface per ticket. It really makes collecting dupes hard because apps require different sets of functionalities/APIs and it also messes up bisecting of regressions later.
$ sha1sum Simple2DSetup-1.13.exe 269c002fb9ea11c2abd8958fc3cc4294af1b45d9 Simple2DSetup-1.13.exe
$ du -sh Simple2DSetup-1.13.exe 11M Simple2DSetup-1.13.exe
$ wine --version wine-3.14-161-g70fbfa2cb8
Regards