[Interest] Async texture upload using the ANGLE OpenGL driver

Thomas Sevaldrud thomas at silentwings.no
Fri Jan 24 14:08:28 CET 2014


Hi,

I'm new on this list, so I'm sorry if this has been discussed before. I am
using Qt in an OpenGL rendering engine, and I'm doing asynchronous texture
uploads by having two separate QOpenGLContexts with texture sharing.

This works nicely on both Windows and Linux as long as I'm running the full
OpenGL drivers. But, when using the ANGLE drivers, I get a deadlock when
the rendering thread is doing a glDrawElements while the texture upload
thread is in a glTexImage2D.

These are the stacks for my two threads:

Thread 1:

0 NtWaitForSingleObject ntdll 0x7781bc3c
1 WaitForSingleObjectEx KERNELBASE 0x75411180
2 WaitForSingleObject KERNELBASE 0x754110c0
3 nvd3dum 0x63911fe2
4 nvd3dum 0x63912bca
5 nvd3dum 0x639248b0
6 CreateSurfaceLH d3d9 0x645cc420
7 DdCreateSurfaceLH d3d9 0x645cc0a7
8 DdCreateSurfaceFilter d3d9 0x645cc055
9 CBuffer::CBuffer d3d9 0x645d1268
10 CIndexBuffer::CIndexBuffer d3d9 0x645d1412
11 CDriverIndexBuffer::CDriverIndexBuffer d3d9 0x645d13ba
12 CIndexBuffer::CreateDriverIndexBuffer d3d9 0x645d1367
13 CIndexBuffer::Create d3d9 0x645da2ba
14 CBaseDevice::CreateIndexBuffer d3d9 0x645e4ac2
15 rx::Renderer9::createIndexBuffer renderer9.cpp 742 0x5323a643
16 rx::IndexBuffer9::initialize indexbuffer9.cpp 74 0x53235e52
17 rx::IndexBufferInterface::setBufferSize indexbuffer.cpp 125 0x53223d66
18 rx::StaticIndexBufferInterface::reserveBufferSpace indexbuffer.cpp 177
0x53224159
19 rx::IndexDataManager::prepareIndexData indexdatamanager.cpp 224
0x53224ae9
20 rx::Renderer9::applyIndexBuffer renderer9.cpp 1405 0x5323d551
21 gl::Context::drawElements context.cpp 2025 0x5319a495
22 glDrawElements libglesv2.cpp 2168 0x531c2212

Thread 2:
0 NtWaitForSingleObject ntdll 0x7781bc3c
1 WaitForSingleObjectEx KERNELBASE 0x75411180
2 WaitForSingleObject KERNELBASE 0x754110c0
3 nvd3dum 0x63911fe2
4 nvd3dum 0x63912bca
5 nvd3dum 0x639248b0
6 CreateSurfaceLH d3d9 0x645cc420
7 DdCreateSurfaceLH d3d9 0x645cc0a7
8 DdCreateSurfaceFilter d3d9 0x645d08b2
9 CMipMap::CMipMap d3d9 0x645e0f7c
10 CMipMap::Create d3d9 0x645e0a83
11 CBaseDevice::CreateTexture d3d9 0x645e075a
12 rx::Image9::createSurface image9.cpp 195 0x5323220f
13 rx::Image9::lock image9.cpp 217 0x53232410
14 rx::Image9::loadData image9.cpp 364 0x53232d84
15 gl::Texture::setImage texture.cpp 205 0x532193c2
16 gl::Texture2D::setImage texture.cpp 423 0x5321a06d
17 glTexImage2D libglesv2.cpp 5506 0x531cafab

Any ideas would be greatly appreciated :-)

Best regards,
Thomas Sevaldrud
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20140124/2b669466/attachment.html>


More information about the Interest mailing list