diff options
author | bors-servo <lbergstrom+bors@mozilla.com> | 2018-11-23 12:38:24 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-11-23 12:38:24 -0500 |
commit | c96f07a0b592dedd09570f3e1492684ed68b38b2 (patch) | |
tree | 96ee0e689b011001369745c4f491a54d7480e91a /components/canvas/webgl_thread.rs | |
parent | d7d901551873c952a214f7094d08c1477a042176 (diff) | |
parent | 9c29e139b9fa0b362312372b17e25e434fc39918 (diff) | |
download | servo-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.rs | 17 |
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 { |