Opened 15 years ago
Closed 9 years ago
#5640 closed defect (fixed)
Hang during Direct3D access from Windows XP — at Version 9
| Reported by: | Vladimir | Owned by: | |
|---|---|---|---|
| Component: | 3D support | Version: | VirtualBox 3.1.0 |
| Keywords: | Cc: | ||
| Guest type: | Windows | Host type: | Linux |
Description (last modified by )
The following C++ code hangs.
HRESULT hr = S_OK;
m_d3dobj = Direct3DCreate9(D3D_SDK_VERSION);
RECT rc;
GetWindowRect(m_hwnd, &rc);
int wnd_width = rc.right - rc.left;
int wnd_height = rc.bottom - rc.top;
if (wnd_width || wnd_height) {
m_wnd_width = wnd_width;
m_wnd_height = wnd_height;
}
wnd_width += wnd_width % 2;
D3DDISPLAYMODE d3ddm;
hr = IDirect3D9_GetAdapterDisplayMode(m_d3dobj, D3DADAPTER_DEFAULT, &d3ddm);
if (FAILED(hr)) return false;
m_texture_format = d3ddm.Format;
D3DPRESENT_PARAMETERS d3dpp;
memset(&d3dpp, 0, sizeof(D3DPRESENT_PARAMETERS));
d3dpp.Flags = D3DPRESENTFLAG_VIDEO;
d3dpp.Windowed = TRUE;
d3dpp.hDeviceWindow = m_hwnd;
d3dpp.BackBufferWidth = m_wnd_width;
d3dpp.BackBufferHeight = m_wnd_height;
d3dpp.SwapEffect = D3DSWAPEFFECT_COPY;
d3dpp.MultiSampleType = D3DMULTISAMPLE_NONE;
d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT;
d3dpp.BackBufferFormat = m_texture_format;
d3dpp.BackBufferCount = 1;
d3dpp.EnableAutoDepthStencil = FALSE;
hr = IDirect3D9_CreateDevice(m_d3dobj, D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, m_hwnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &m_d3ddev);
I am using DirectX SDK 9. of March 2008, Visual Studio 2008 SP1.
The call to IDirect3D9_GetAdapterDisplayMode has returned d3ddm.Format = D3DFMT_X8R8G8B8
Guest OS is Windows XP SP3, russian.
Host OS is Ubuntu 9.10, 32-bit, with all updates.
The output of uname -a:
$ uname -a Linux veremeev 2.6.31-15-generic #50-Ubuntu SMP Tue Nov 10 14:54:29 UTC 2009 i686 GNU/Linux
Host video adapter is NVidia GeForce 8400 GS, driver version is 190.42
Change History (13)
by , 15 years ago
comment:1 by , 15 years ago
| Component: | other → 3D support |
|---|---|
| Host type: | other → Linux |
comment:2 by , 15 years ago
Rather strange...because if this isn't working, then d3d9 apps wouldn't work at all, which isn't the case.
Try running VirtualBox with CR_DEBUG=1. And inside your guest, set CR_DEBUG_FILE=crlog.txt and run your app. Please attach those logs.
comment:3 by , 15 years ago
Another reason might be that host part created opengl 3.2 context with compatibility profile which might mess the things up. Anyway, it's strange.
by , 15 years ago
by , 15 years ago
| Attachment: | output_debug added |
|---|
comment:4 by , 15 years ago
I also think this is strange, because dxdiag runs well and successfully shows the rotating cube.
My application also runs well on windows host. Basically, it is an ActiveX component, playing a video, inserted in the simple C# form.
I am attaching two files. The first one is the requested crlog.txt, and the second one is the log of messages, emitted in the Visual Studio's Debug window. There are a couple of warnings, related to the OpenGL.
by , 15 years ago
| Attachment: | crlog.txt.1 added |
|---|
comment:5 by , 15 years ago
| Guest type: | other → Windows |
|---|---|
| Summary: | Poor support of Direct3D on windows XP → Hang during Direct3D access from Windows XP |
comment:6 by , 15 years ago
I am attaching another crlog.txt. This one was produced during dxdiag run.
One more interesting thing - when I run dxdiag first time, Direct3D 8 tests failed. The second and 3rd runs - Direct3D 8 tests were OK. The attached file is from successful runs of Direct3D 8 and 9 tests.
comment:7 by , 15 years ago
After several software upgrades, I've tried the code once more. This doesn't hang now, but still doesn't draw anything.
I am developing an ActiveX video player and testing it in the C# form. I am using VisualStudio 2008 SP1. After launching my form, I've seen the following messages in the debug window. There are several OpenGL warnings among them.
'PlayerTestContainer.exe': Loaded 'C:\WINDOWS\system32\mswsock.dll'
'PlayerTestContainer.exe': Loaded 'C:\WINDOWS\system32\hnetcfg.dll', Symbols loaded (source information stripped).
'PlayerTestContainer.exe': Loaded 'C:\WINDOWS\system32\wshtcpip.dll', Symbols loaded (source information stripped).
'PlayerTestContainer.exe': Loaded 'C:\WINDOWS\system32\dnsapi.dll'
'PlayerTestContainer.exe': Loaded 'C:\WINDOWS\system32\winrnr.dll', Symbols loaded (source information stripped).
'PlayerTestContainer.exe': Loaded 'C:\WINDOWS\system32\wldap32.dll', Symbols loaded (source information stripped).
'PlayerTestContainer.exe': Loaded 'C:\WINDOWS\system32\rasadhlp.dll', Symbols loaded (source information stripped).
The thread 'Win32 Thread' (0xf20) has exited with code 0 (0x0).
The thread 'Win32 Thread' (0xf24) has exited with code 0 (0x0).
'PlayerTestContainer.exe': Loaded 'C:\WINDOWS\system32\VBoxOGL.dll'
'PlayerTestContainer.exe': Loaded 'C:\WINDOWS\system32\VBoxOGLcrutil.dll'
'PlayerTestContainer.exe': Loaded 'C:\WINDOWS\system32\VBoxOGLpackspu.dll'
'PlayerTestContainer.exe': Loaded 'C:\WINDOWS\system32\VBoxOGLerrorspu.dll'
'PlayerTestContainer.exe': Loaded 'C:\WINDOWS\system32\VBoxOGLfeedbackspu.dll'
'PlayerTestContainer.exe': Loaded 'C:\WINDOWS\system32\VBoxOGLpassthroughspu.dll'
'PlayerTestContainer.exe': Loaded 'C:\WINDOWS\system32\opengl32.dll', Symbols loaded (source information stripped).
'PlayerTestContainer.exe': Loaded 'C:\WINDOWS\system32\glu32.dll', Symbols loaded (source information stripped).
'PlayerTestContainer.exe': Unloaded 'C:\WINDOWS\system32\VBoxOGL.dll'
'PlayerTestContainer.exe': Loaded 'C:\WINDOWS\system32\VBoxD3D9.dll'
OpenGL Warning: State tracker is being re-initialized..
OpenGL Warning: State tracker is being re-initialized..
'PlayerTestContainer.exe': Loaded 'C:\WINDOWS\system32\libWine.dll'
'PlayerTestContainer.exe': Loaded 'C:\WINDOWS\system32\wined3d.dll'
'PlayerTestContainer.exe': Loaded 'C:\WINDOWS\system32\VBoxOGL.dll'
'PlayerTestContainer.exe': Loaded 'C:\WINDOWS\system32\mcd32.dll', Symbols loaded (source information stripped).
'PlayerTestContainer.exe': Unloaded 'C:\WINDOWS\system32\mcd32.dll'
OpenGL Warning: No pincher, please call crStateSetCurrentPointers() in your SPU
'PlayerTestContainer.exe': Loaded 'C:\WINDOWS\system32\usp10.dll', Symbols loaded (source information stripped).
comment:8 by , 14 years ago
Just noticed, that this bug is gone now. VirtualBox is now 3.2.8-64453~Ubuntu~lucid. Newer DirectX SDK, other updates.
comment:9 by , 9 years ago
| Description: | modified (diff) |
|---|---|
| Resolution: | → fixed |
| Status: | new → closed |


VBox.log