aboutsummaryrefslogtreecommitdiffstats
path: root/components/canvas/webgl_thread.rs
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2018-11-23 12:38:24 -0500
committerGitHub <noreply@github.com>2018-11-23 12:38:24 -0500
commitc96f07a0b592dedd09570f3e1492684ed68b38b2 (patch)
tree96ee0e689b011001369745c4f491a54d7480e91a /components/canvas/webgl_thread.rs
parentd7d901551873c952a214f7094d08c1477a042176 (diff)
parent9c29e139b9fa0b362312372b17e25e434fc39918 (diff)
downloadservo-c96f07a0b592dedd09570f3e1492684ed68b38b2.tar.gz
servo-c96f07a0b592dedd09570f3e1492684ed68b38b2.zip
Auto merge of #22234 - jdm:android-gl-crash, r=Manishearth
Fix android GL crash There were two issues, fundamentally: 1. POINT_SPRITE is not supported on GLES, which was causing the GL_INVALID_ENUM error when using any WebGL API. 2. The version check was using the wrong version value to determine if enabling point sprites was necessary. --- - [x] `./mach build -d` does not report any errors - [x] `./mach test-tidy` does not report any errors - [x] These changes fix #22162 - [x] There are tests for these changes <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/22234) <!-- Reviewable:end -->
Diffstat (limited to 'components/canvas/webgl_thread.rs')
-rw-r--r--components/canvas/webgl_thread.rs17
1 files changed, 14 insertions, 3 deletions
diff --git a/components/canvas/webgl_thread.rs b/components/canvas/webgl_thread.rs
index 8fc311a1982..dd279caabf0 100644
--- a/components/canvas/webgl_thread.rs
+++ b/components/canvas/webgl_thread.rs
@@ -129,11 +129,22 @@ impl<VR: WebVRRenderHandler + 'static> WebGLThread<VR> {
let glsl_version = Self::get_glsl_version(&data.ctx);
// FIXME(nox): Should probably be done by offscreen_gl_context.
- if (glsl_version.major, glsl_version.minor) < (3, 1) {
- data.ctx.gl().enable(gl::POINT_SPRITE);
- }
if !is_gles() {
+ // Points sprites are enabled by default in OpenGL 3.2 core
+ // and in GLES. Rather than doing version detection, it does
+ // not hurt to enable them anyways.
+
+ data.ctx.gl().enable(gl::POINT_SPRITE);
+ let err = data.ctx.gl().get_error();
+ if err != 0 {
+ warn!("Error enabling GL point sprites: {}", err);
+ }
+
data.ctx.gl().enable(gl::PROGRAM_POINT_SIZE);
+ let err = data.ctx.gl().get_error();
+ if err != 0 {
+ warn!("Error enabling GL program point size: {}", err);
+ }
}
WebGLCreateContextResult {