microsoft / angle

ANGLE: OpenGL ES to DirectX translation
Other
615 stars 166 forks source link

Crash on Windows Phone 8.1 devices with gl_PointSize used in the shader #37

Closed stammen closed 9 years ago

stammen commented 9 years ago

On certain Windows 8.1 phones (a Nokia 625 and a Nokia 830 with the cocos2d-x china test team) and a Nokia 1520 from our test team, there will be a crash if a shader program uses gl_PointSize.

If I remove gl_PointSize from the shader, cocos2d-x does not crash.

What appears to be happening is that Angle is hung after the gl_PointSprites shader is used. The next call to DrawElements fails at

image

createSRV returns the following error:

D3D11 ERROR: ID3D11Device::RemoveDevice: Device removal has been triggered for the following reason (DXGI_ERROR_DEVICE_HUNG: The Device took an unreasonable amount of time to execute its commands, or the hardware crashed/hung. As a result, the TDR (Timeout Detection and Recovery) mechanism has been triggered. The current Device Context was executing commands when the hang occurred. The application may want to respawn and fallback to less aggressive use of the display hardware). [ EXECUTION ERROR #378: DEVICE_REMOVAL_PROCESS_AT_FAULT]

If I remove the use of gl_PointSprites from the Shader, then no crash.

austinkinross commented 9 years ago

Thanks for reporting this Dale! This is likely to be caused by ANGLE's lack of support for glDrawElements with GL_POINTS on Feature Level 9_3 devices, as documented here. Investigating a solution for this is a high-priority item on our backlog.

Thanks, Austin

coopp commented 9 years ago

This has been fixed in the latest push.

stammen commented 8 years ago

Fixed for all devices in commit 0edf96a2f54a43d068244a86aaf9133c1bf71fe5