Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use IOSurface for texture sharing on macOS #23509

Closed
wants to merge 3 commits into from

Conversation

@zakorgy
Copy link
Contributor

zakorgy commented Jun 4, 2019

Use a non-shared GL context for the WebGL threads, with triple buffered IOSurfaces bound to the Framebuffer. Using a simple IOSurface resulted in flickering since both the WR and the WebGL thread uses it, using three gave me the proper result.
When we receive a Lock message, we send the id of a finished IOSurface to the WR thread where we bind it to a texture, which WR can use.
The synchronization of the IOSurfaces is a little hacky, since there are no clue in GL that we started rendering a new frame and we can swap the surfaces: if the document process a FrameRequestCallback callback (which comes from requestAnimationFrame), we send a message to the WebGL thread to notify about the start of the new frame. This is where we swap the underlying IOsurfaces of the WebGL contexts.
I have checked the performance on several WebGL samples and the FPS numbers where promising.


  • ./mach build -d does not report any errors
  • ./mach test-tidy does not report any errors
  • These changes fix #11138 (GitHub issue number if applicable)

This change is Reviewable

@highfive
Copy link

highfive commented Jun 4, 2019

Heads up! This PR modifies the following files:

  • @asajeffrey: components/script/dom/document.rs, components/script/dom/window.rs
  • @KiChjang: components/script/dom/document.rs, components/script/dom/window.rs
@highfive
Copy link

highfive commented Jun 4, 2019

warning Warning warning

  • These commits modify script code, but no tests are modified. Please consider adding a test!
@zakorgy
Copy link
Contributor Author

zakorgy commented Jun 4, 2019

cc @jdm

Copy link
Member

asajeffrey left a comment

Yay! It would be very very nice to have this. I'm happily surprised we can do this without any changes to webrender! My main question is about whether we can do this but keep the existing sync'ing mechanism, so we don't end up with very different stories of how to avoid race conditions on different architectures.

WebGLSender<(u32, Size2D<i32>, usize)>,
WebGLReceiver<(u32, Size2D<i32>, usize)>,
WebGLSender<(u32, Size2D<i32>, Option<u32>, usize)>,
WebGLReceiver<(u32, Size2D<i32>, Option<u32>, usize)>,

This comment has been minimized.

@asajeffrey

asajeffrey Jun 4, 2019

Member

Ditto: any chance we can name this type and name its fields?

@@ -70,18 +72,29 @@ impl WebGLThreads {
struct WebGLExternalImages {
webrender_gl: Rc<dyn gl::Gl>,
webgl_channel: WebGLSender<WebGLMsg>,
// Mapping between an IOSurface and the texture it is bound on the WR thread
textures: FnvHashMap<u32, gl::GLuint>,

This comment has been minimized.

@asajeffrey

asajeffrey Jun 4, 2019

Member

Nit: any chance we can name these types? I'm getting lost in all the u32s :)

components/canvas/webgl_mode/inprocess.rs Outdated Show resolved Hide resolved
let texture_id = match io_surface_id {
Some(io_surface_id) => {
let texture_id = match self.textures.entry(io_surface_id) {
Entry::Occupied(o) => *o.get(),

This comment has been minimized.

@asajeffrey

asajeffrey Jun 4, 2019

Member

Nit: can we use Entry::or_insert_with() here?

This comment has been minimized.

@zakorgy

zakorgy Jun 10, 2019

Author Contributor

As I remember we can't because of the borrow of self here, but I will check it again.

*v.insert(texture_id)
},
};
texture_id

This comment has been minimized.

@asajeffrey

asajeffrey Jun 4, 2019

Member

There's no locking or sync'ing needed here? How does this avoid race conditions between the WebGL thread and the WebRender thread?

This comment has been minimized.

@zakorgy

zakorgy Jun 10, 2019

Author Contributor

So far the triple buffering result worked for me, because the time interval between Lock and Unlock messages was lesser than switching texture targets on the WebGL thread two times. But I can agree adding it would be make the code more safer, I will look into that.

components/canvas/webgl_thread.rs Show resolved Hide resolved
@@ -277,18 +312,33 @@ impl<VR: WebVRRenderHandler + 'static> WebGLThread<VR> {
.gl_factory
.new_shared_context(version, size, attributes)
.map(|r| (r, WebGLContextShareMode::SharedTexture))
.or_else(|err| {
#[cfg(target_os = "macos")]

This comment has been minimized.

@asajeffrey

asajeffrey Jun 4, 2019

Member

Should we introduce a new abstraction so we're not special-casing macos? Something where the GL context isn't sharing, but the texture is? Alternatively, should we move this logic into GLFactory?

@zakorgy
Copy link
Contributor Author

zakorgy commented Jun 10, 2019

@asajeffrey sorry for the late answer and thank you for the review. For answering your main question, I tried to use the current syncing mechanism, but unfortunately this was the only satisfying solution I could come up, because we can't use OpenGL sync objects between non shared contexts.

@asajeffrey
Copy link
Member

asajeffrey commented Jun 10, 2019

Oh that's annoying. We should be using some sync mechanism rather than relying on timing. Perhaps we can use a variant on triple buffering, where we keep 3 buffers: the one that webrender is reading from, the one the webgl is currently writing to, and the one that webgl has finished writing to? Lock would swap 1 and 3, and at the end of an rAF we'd flush and swap 2 and 3?

@zakorgy
Copy link
Contributor Author

zakorgy commented Jun 11, 2019

@asajeffrey your idea works well, I will address the review changes and update the PR. After that I will check if we could abstract away the cfg-s in GLContextFactory as you mentioned in #23509 (comment)

@jdm
Copy link
Member

jdm commented Jun 11, 2019

Oh, good find on using the correct clear color!

Cargo.toml Outdated
@@ -28,3 +28,4 @@ opt-level = 3
# Those are here to dedupe winapi since mio is still using winapi 0.2.
mio = { git = "https://github.com/servo/mio.git", branch = "servo" }
iovec = { git = "https://github.com/servo/iovec.git", branch = "servo" }
offscreen_gl_context = { git = "https://github.com/zakorgy/rust-offscreen-rendering-context", branch = "io-surface" }

This comment has been minimized.

@asajeffrey

asajeffrey Jun 11, 2019

Member

We should land this patch to offscreen_gl_context before landing this PR.

@jdm
Copy link
Member

jdm commented Jun 11, 2019

@bors-servo try=wpt-mac

@bors-servo
Copy link
Contributor

bors-servo commented Jun 11, 2019

Trying commit 5a75217 with merge d05a414...

bors-servo added a commit that referenced this pull request Jun 11, 2019
Use IOSurface for texture sharing on macOS

<!-- Please describe your changes on the following line: -->

Use a non-shared GL context for the WebGL threads, with triple buffered IOSurfaces bound to the Framebuffer. Using a simple IOSurface resulted in flickering since both the WR and the WebGL thread uses it, using three gave me the proper result.
When we receive a `Lock` message, we send the id of a finished IOSurface to the WR thread where we bind it to a texture, which WR can use.
The synchronization of the IOSurfaces is a little hacky, since there are no clue in GL that we started rendering a new frame and we can swap the surfaces: if the document process a `FrameRequestCallback` callback (which comes from `requestAnimationFrame`), we send a message to the WebGL thread to notify about the start of the new frame. This is where we swap the underlying IOsurfaces of the WebGL contexts.
I have checked the performance on several WebGL samples and the FPS numbers where promising.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #11138 (GitHub issue number if applicable)

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->

<!-- 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/23509)
<!-- Reviewable:end -->
@jdm
Copy link
Member

jdm commented Jun 11, 2019

Also the linux and windows builds are failing:

error[E0599]: no method named `get_complete_io_surface_id` found for type `&offscreen_gl_context::draw_buffer::DrawBuffer` in the current scope
   --> components\canvas\gl_context.rs:182:37
    |
182 |                         draw_buffer.get_complete_io_surface_id(),
    |                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^
error[E0599]: no method named `get_complete_io_surface_id` found for type `&offscreen_gl_context::draw_buffer::DrawBuffer` in the current scope
   --> components\canvas\gl_context.rs:196:37
    |
196 |                         draw_buffer.get_complete_io_surface_id(),
    |                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^
error[E0599]: no method named `get_active_io_surface_id` found for type `&offscreen_gl_context::draw_buffer::DrawBuffer` in the current scope
   --> components\canvas\gl_context.rs:210:51
    |
210 |                 ctx.borrow_draw_buffer().unwrap().get_active_io_surface_id()
    |                                                   ^^^^^^^^^^^^^^^^^^^^^^^^
error[E0599]: no method named `get_active_io_surface_id` found for type `&offscreen_gl_context::draw_buffer::DrawBuffer` in the current scope
   --> components\canvas\gl_context.rs:213:51
    |
213 |                 ctx.borrow_draw_buffer().unwrap().get_active_io_surface_id()
    |                                                   ^^^^^^^^^^^^^^^^^^^^^^^^
error[E0599]: no method named `swap_draw_buffer` found for type `&mut offscreen_gl_context::gl_context::GLContext<offscreen_gl_context::platform::with_wgl::native_gl_context::NativeGLContext>` in the current scope
   --> components\canvas\gl_context.rs:222:58
    |
222 |             GLContextWrapper::Native(ref mut ctx) => ctx.swap_draw_buffer(clear_color),
    |                                                          ^^^^^^^^^^^^^^^^
error[E0599]: no method named `swap_draw_buffer` found for type `&mut offscreen_gl_context::gl_context::GLContext<offscreen_gl_context::platform::with_osmesa::OSMesaContext>` in the current scope
   --> components\canvas\gl_context.rs:223:58
    |
223 |             GLContextWrapper::OSMesa(ref mut ctx) => ctx.swap_draw_buffer(clear_color),
    |                                                          ^^^^^^^^^^^^^^^^
error[E0599]: no method named `handle_lock` found for type `&mut offscreen_gl_context::gl_context::GLContext<offscreen_gl_context::platform::with_wgl::native_gl_context::NativeGLContext>` in the current scope
   --> components\canvas\gl_context.rs:229:58
    |
229 |             GLContextWrapper::Native(ref mut ctx) => ctx.handle_lock(),
    |                                                          ^^^^^^^^^^^
error[E0599]: no method named `handle_lock` found for type `&mut offscreen_gl_context::gl_context::GLContext<offscreen_gl_context::platform::with_osmesa::OSMesaContext>` in the current scope
   --> components\canvas\gl_context.rs:230:58
    |
230 |             GLContextWrapper::OSMesa(ref mut ctx) => ctx.handle_lock(),
    |                                                          ^^^^^^^^^^^
error: aborting due to 8 previous errors
@jdm
Copy link
Member

jdm commented Jun 11, 2019

Lots of test failures - here are the unique ones:

▶ CRASH [expected OK] /_webgl/conformance/extensions/ext-shader-texture-lod.html
  │ 
  │ VMware, Inc.
  │ softpipe
  │ 3.3 (Core Profile) Mesa 18.3.0-devel
  │ called `Option::unwrap()` on a `None` value (thread WebGLThread, at src/libcore/option.rs:347)
  │ stack backtrace:
  │    0:        0x112c9430e - __ZN9backtrace9backtrace5trace17h2aa3bfd5ea4aba44E
  │    1:        0x112c933ac - __ZN72_$LT$backtrace..capture..Backtrace$u20$as$u20$core..default..Default$GT$7default17hc9b000eeaacd89abE
  │    2:        0x10ff70669 - __ZN5servo4main28_$u7b$$u7b$closure$u7d$$u7d$17h9d9b5b0a24be810cE
  │    3:        0x112e40410 - __ZN3std9panicking20rust_panic_with_hook17h4d29a1b082e04079E
  │    4:        0x112e3fe5c - __ZN3std9panicking18continue_panic_fmt17h4a5eb546816972c4E
  │    5:        0x112e3fd48 - _rust_begin_unwind
  │    6:        0x112e5cfe1 - __ZN4core9panicking9panic_fmt17h08425221a00ef4a4E
  │    7:        0x112e5cf26 - __ZN4core9panicking5panic17h964b30896190e4ffE
  │    8:        0x112414ae5 - __ZN6canvas12webgl_thread21WebGLThread$LT$VR$GT$20handle_webgl_command17h53f4cd3731b70ca0E
  │    9:        0x1123de816 - __ZN3std10sys_common9backtrace28__rust_begin_short_backtrace17h76a2e1f313bceaf9E.llvm.10547903177341280181
  │   10:        0x112461561 - __ZN3std9panicking3try7do_call17h150ae451a94dc9a7E.llvm.5012549804399729135
  │   11:        0x112e48c4e - ___rust_maybe_catch_panic
  │   12:        0x112461771 - __ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h6a94b1439869bf36E
  │   13:        0x112e2e7fd - __ZN83_$LT$alloc..boxed..Box$LT$F$GT$$u20$as$u20$core..ops..function..FnOnce$LT$A$GT$$GT$9call_once17h3ec79158893c158bE
  │   14:        0x112e4812d - __ZN3std3sys4unix6thread6Thread3new12thread_start17h42de43c740cec52bE
  │   15:     0x7fff76978660 - __pthread_body
  │   16:     0x7fff7697850c - __pthread_start
  │ [2019-06-11T16:49:29Z ERROR servo] called `Option::unwrap()` on a `None` value

▶ TIMEOUT [expected OK] /_webgl/conformance/buffers/buffer-data-dynamic-delay.html
  │ 
  │ VMware, Inc.
  │ softpipe
  │ 3.3 (Core Profile) Mesa 18.3.0-devel
  │ [2019-06-11T16:59:41Z ERROR canvas::webgl_thread] Last GL operation failed: DrawArrays { mode: 5, first: 0, count: 2 }
  │ assertion failed: `(left == right)`
  │   left: `1282`,
  │  right: `0`: Unexpected WebGL error: 0x502 (1282) (thread WebGLThread, at components/canvas/webgl_thread.rs:1555)
  │ stack backtrace:
  │    0:        0x1088c430e - __ZN9backtrace9backtrace5trace17h2aa3bfd5ea4aba44E
  │    1:        0x1088c33ac - __ZN72_$LT$backtrace..capture..Backtrace$u20$as$u20$core..default..Default$GT$7default17hc9b000eeaacd89abE
  │    2:        0x105ba0669 - __ZN5servo4main28_$u7b$$u7b$closure$u7d$$u7d$17h9d9b5b0a24be810cE
  │    3:        0x108a70410 - __ZN3std9panicking20rust_panic_with_hook17h4d29a1b082e04079E
  │    4:        0x108a6fe5c - __ZN3std9panicking18continue_panic_fmt17h4a5eb546816972c4E
  │    5:        0x108a6fdb0 - __ZN3std9panicking15begin_panic_fmt17h1bef9ef925c1eb3eE
  │    6:        0x10804c711 - __ZN6canvas12webgl_thread9WebGLImpl5apply17h0d8005f53d521abcE
  │    7:        0x108044bb7 - __ZN6canvas12webgl_thread21WebGLThread$LT$VR$GT$20handle_webgl_command17h53f4cd3731b70ca0E
  │    8:        0x10800e816 - __ZN3std10sys_common9backtrace28__rust_begin_short_backtrace17h76a2e1f313bceaf9E.llvm.10547903177341280181
  │    9:        0x108091561 - __ZN3std9panicking3try7do_call17h150ae451a94dc9a7E.llvm.5012549804399729135
  │   10:        0x108a78c4e - ___rust_maybe_catch_panic
  │   11:        0x108091771 - __ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h6a94b1439869bf36E
  │   12:        0x108a5e7fd - __ZN83_$LT$alloc..boxed..Box$LT$F$GT$$u20$as$u20$core..ops..function..FnOnce$LT$A$GT$$GT$9call_once17h3ec79158893c158bE
  │   13:        0x108a7812d - __ZN3std3sys4unix6thread6Thread3new12thread_start17h42de43c740cec52bE
  │   14:     0x7fff76978660 - __pthread_body
  │   15:     0x7fff7697850c - __pthread_start

  ▶ CRASH [expected OK] /_webgl/conformance2/rendering/texture-switch-performance.html
  │ 
  │ _RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL.
  │ VMware, Inc.
  │ softpipe
  │ 3.3 (Core Profile) Mesa 18.3.0-devel
  │ [2019-06-11T17:02:09Z ERROR canvas::webgl_thread] Last GL operation failed: Uniform1i(0, 0)
  │ assertion failed: `(left == right)`
  │   left: `1282`,
  │  right: `0`: Unexpected WebGL error: 0x502 (1282) (thread WebGLThread, at components/canvas/webgl_thread.rs:1555)
  │ stack backtrace:
  │    0:        0x10dc7730e - __ZN9backtrace9backtrace5trace17h2aa3bfd5ea4aba44E
  │    1:        0x10dc763ac - __ZN72_$LT$backtrace..capture..Backtrace$u20$as$u20$core..default..Default$GT$7default17hc9b000eeaacd89abE
  │    2:        0x10af53669 - __ZN5servo4main28_$u7b$$u7b$closure$u7d$$u7d$17h9d9b5b0a24be810cE
  │    3:        0x10de23410 - __ZN3std9panicking20rust_panic_with_hook17h4d29a1b082e04079E
  │    4:        0x10de22e5c - __ZN3std9panicking18continue_panic_fmt17h4a5eb546816972c4E
  │    5:        0x10de22db0 - __ZN3std9panicking15begin_panic_fmt17h1bef9ef925c1eb3eE
  │    6:        0x10d3ff711 - __ZN6canvas12webgl_thread9WebGLImpl5apply17h0d8005f53d521abcE
  │    7:        0x10d3f7bb7 - __ZN6canvas12webgl_thread21WebGLThread$LT$VR$GT$20handle_webgl_command17h53f4cd3731b70ca0E
  │    8:        0x10d3c1816 - __ZN3std10sys_common9backtrace28__rust_begin_short_backtrace17h76a2e1f313bceaf9E.llvm.10547903177341280181
  │    9:        0x10d444561 - __ZN3std9panicking3try7do_call17h150ae451a94dc9a7E.llvm.5012549804399729135
  │   10:        0x10de2bc4e - ___rust_maybe_catch_panic
  │   11:        0x10d444771 - __ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h6a94b1439869bf36E
  │   12:        0x10de117fd - __ZN83_$LT$alloc..boxed..Box$LT$F$GT$$u20$as$u20$core..ops..function..FnOnce$LT$A$GT$$GT$9call_once17h3ec79158893c158bE
  │   13:        0x10de2b12d - __ZN3std3sys4unix6thread6Thread3new12thread_start17h42de43c740cec52bE
  │   14:     0x7fff584bd660 - __pthread_body
  │   15:     0x7fff584bd50c - __pthread_start

    ▶ CRASH [expected OK] /_webgl/conformance2/rendering/canvas-resizing-with-pbo-bound.html
  │ 
  │ _RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL.
  │ VMware, Inc.
  │ softpipe
  │ 3.3 (Core Profile) Mesa 18.3.0-devel
  │ [2019-06-11T16:56:42Z ERROR script::dom::webglrenderingcontext] Couldn't create WebGLRenderingContext: preserveDrawingBuffer is not supported yet
  │ DESCRIPTION: Verifies that resizing the canvas (recreating the backing framebuffer) works correctly while a PBO is bound.
  │ 
  │ Regression test for Chromium <a href='https://bugs.chromium.org/p/chromium/issues/detail?id=644572'>Issue 644572</a>
  │ 
  │ requestAnimationFrame
  │ Testing preserveDrawingBuffer = true
  │ FAIL Unable to fetch WebGL rendering context for Canvas
  │ FAIL context does not exist
  │ Testing preserveDrawingBuffer = false
  │ PASS context exists
  │ [2019-06-11T16:56:42Z ERROR canvas::webgl_thread] Last GL operation failed: ClearColor(0.0, 1.0, 0.0, 1.0)
  │ assertion failed: `(left == right)`
  │   left: `1282`,
  │  right: `0`: Unexpected WebGL error: 0x502 (1282) (thread WebGLThread, at components/canvas/webgl_thread.rs:1555)
  │ stack backtrace:
  │    0:        0x10780030e - __ZN9backtrace9backtrace5trace17h2aa3bfd5ea4aba44E
  │    1:        0x1077ff3ac - __ZN72_$LT$backtrace..capture..Backtrace$u20$as$u20$core..default..Default$GT$7default17hc9b000eeaacd89abE
  │    2:        0x104adc669 - __ZN5servo4main28_$u7b$$u7b$closure$u7d$$u7d$17h9d9b5b0a24be810cE
  │    3:        0x1079ac410 - __ZN3std9panicking20rust_panic_with_hook17h4d29a1b082e04079E
  │    4:        0x1079abe5c - __ZN3std9panicking18continue_panic_fmt17h4a5eb546816972c4E
  │    5:        0x1079abdb0 - __ZN3std9panicking15begin_panic_fmt17h1bef9ef925c1eb3eE
  │    6:        0x106f88711 - __ZN6canvas12webgl_thread9WebGLImpl5apply17h0d8005f53d521abcE
  │    7:        0x106f80bb7 - __ZN6canvas12webgl_thread21WebGLThread$LT$VR$GT$20handle_webgl_command17h53f4cd3731b70ca0E
  │    8:        0x106f4a816 - __ZN3std10sys_common9backtrace28__rust_begin_short_backtrace17h76a2e1f313bceaf9E.llvm.10547903177341280181
  │    9:        0x106fcd561 - __ZN3std9panicking3try7do_call17h150ae451a94dc9a7E.llvm.5012549804399729135
  │   10:        0x1079b4c4e - ___rust_maybe_catch_panic
  │   11:        0x106fcd771 - __ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h6a94b1439869bf36E
  │   12:        0x10799a7fd - __ZN83_$LT$alloc..boxed..Box$LT$F$GT$$u20$as$u20$core..ops..function..FnOnce$LT$A$GT$$GT$9call_once17h3ec79158893c158bE
  │   13:        0x1079b412d - __ZN3std3sys4unix6thread6Thread3new12thread_start17h42de43c740cec52bE
  │   14:     0x7fff584bd660 - __pthread_body
  │   15:     0x7fff584bd50c - __pthread_start

  ▶ CRASH [expected OK] /_webgl/conformance/context/context-no-alpha-fbo-with-alpha.html
  │ 
  │ VMware, Inc.
  │ softpipe
  │ 3.3 (Core Profile) Mesa 18.3.0-devel
  │ [2019-06-11T17:08:49Z ERROR canvas::webgl_thread] Last GL operation failed: CreateFramebuffer(WebGLSender(..))
  │ assertion failed: `(left == right)`
  │   left: `1282`,
  │  right: `0`: Unexpected WebGL error: 0x502 (1282) (thread WebGLThread, at components/canvas/webgl_thread.rs:1555)
  │ stack backtrace:
  │    0:        0x10af2730e - __ZN9backtrace9backtrace5trace17h2aa3bfd5ea4aba44E
  │    1:        0x10af263ac - __ZN72_$LT$backtrace..capture..Backtrace$u20$as$u20$core..default..Default$GT$7default17hc9b000eeaacd89abE
  │    2:        0x108203669 - __ZN5servo4main28_$u7b$$u7b$closure$u7d$$u7d$17h9d9b5b0a24be810cE
  │    3:        0x10b0d3410 - __ZN3std9panicking20rust_panic_with_hook17h4d29a1b082e04079E
  │    4:        0x10b0d2e5c - __ZN3std9panicking18continue_panic_fmt17h4a5eb546816972c4E
  │    5:        0x10b0d2db0 - __ZN3std9panicking15begin_panic_fmt17h1bef9ef925c1eb3eE
  │    6:        0x10a6af711 - __ZN6canvas12webgl_thread9WebGLImpl5apply17h0d8005f53d521abcE
  │    7:        0x10a6a7bb7 - __ZN6canvas12webgl_thread21WebGLThread$LT$VR$GT$20handle_webgl_command17h53f4cd3731b70ca0E
  │    8:        0x10a671816 - __ZN3std10sys_common9backtrace28__rust_begin_short_backtrace17h76a2e1f313bceaf9E.llvm.10547903177341280181
  │    9:        0x10a6f4561 - __ZN3std9panicking3try7do_call17h150ae451a94dc9a7E.llvm.5012549804399729135
  │   10:        0x10b0dbc4e - ___rust_maybe_catch_panic
  │   11:        0x10a6f4771 - __ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h6a94b1439869bf36E
  │   12:        0x10b0c17fd - __ZN83_$LT$alloc..boxed..Box$LT$F$GT$$u20$as$u20$core..ops..function..FnOnce$LT$A$GT$$GT$9call_once17h3ec79158893c158bE
  │   13:        0x10b0db12d - __ZN3std3sys4unix6thread6Thread3new12thread_start17h42de43c740cec52bE
  │   14:     0x7fff58b01660 - __pthread_body
  │   15:     0x7fff58b0150c - __pthread_start

  ▶ CRASH [expected OK] /_webgl/conformance/context/context-hidden-alpha.html
  │ 
  │ VMware, Inc.
  │ softpipe
  │ 3.3 (Core Profile) Mesa 18.3.0-devel
  │ [2019-06-11T17:08:48Z ERROR canvas::webgl_thread] Last GL operation failed: BlendFunc(0, 772)
  │ assertion failed: `(left == right)`
  │   left: `1282`,
  │  right: `0`: Unexpected WebGL error: 0x502 (1282) (thread WebGLThread, at components/canvas/webgl_thread.rs:1555)
  │ stack backtrace:
  │    0:        0x10890230e - __ZN9backtrace9backtrace5trace17h2aa3bfd5ea4aba44E
  │    1:        0x1089013ac - __ZN72_$LT$backtrace..capture..Backtrace$u20$as$u20$core..default..Default$GT$7default17hc9b000eeaacd89abE
  │    2:        0x105bde669 - __ZN5servo4main28_$u7b$$u7b$closure$u7d$$u7d$17h9d9b5b0a24be810cE
  │    3:        0x108aae410 - __ZN3std9panicking20rust_panic_with_hook17h4d29a1b082e04079E
  │    4:        0x108aade5c - __ZN3std9panicking18continue_panic_fmt17h4a5eb546816972c4E
  │    5:        0x108aaddb0 - __ZN3std9panicking15begin_panic_fmt17h1bef9ef925c1eb3eE
  │    6:        0x10808a711 - __ZN6canvas12webgl_thread9WebGLImpl5apply17h0d8005f53d521abcE
  │    7:        0x108082bb7 - __ZN6canvas12webgl_thread21WebGLThread$LT$VR$GT$20handle_webgl_command17h53f4cd3731b70ca0E
  │    8:        0x10804c816 - __ZN3std10sys_common9backtrace28__rust_begin_short_backtrace17h76a2e1f313bceaf9E.llvm.10547903177341280181
  │    9:        0x1080cf561 - __ZN3std9panicking3try7do_call17h150ae451a94dc9a7E.llvm.5012549804399729135
  │   10:        0x108ab6c4e - ___rust_maybe_catch_panic
  │   11:        0x1080cf771 - __ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h6a94b1439869bf36E
  │   12:        0x108a9c7fd - __ZN83_$LT$alloc..boxed..Box$LT$F$GT$$u20$as$u20$core..ops..function..FnOnce$LT$A$GT$$GT$9call_once17h3ec79158893c158bE
  │   13:        0x108ab612d - __ZN3std3sys4unix6thread6Thread3new12thread_start17h42de43c740cec52bE
  │   14:     0x7fff58b01660 - __pthread_body
  │   15:     0x7fff58b0150c - __pthread_start

  ▶ TIMEOUT [expected OK] /_webgl/conformance/rendering/many-draw-calls.html
  │ 
  │ VMware, Inc.
  │ softpipe
  │ 3.3 (Core Profile) Mesa 18.3.0-devel
  │ [2019-06-11T16:49:17Z ERROR canvas::webgl_thread] Last GL operation failed: Clear(16384)
  │ assertion failed: `(left == right)`
  │   left: `1282`,
  │  right: `0`: Unexpected WebGL error: 0x502 (1282) (thread WebGLThread, at components/canvas/webgl_thread.rs:1555)
  │ stack backtrace:
  │    0:        0x111ad930e - __ZN9backtrace9backtrace5trace17h2aa3bfd5ea4aba44E
  │    1:        0x111ad83ac - __ZN72_$LT$backtrace..capture..Backtrace$u20$as$u20$core..default..Default$GT$7default17hc9b000eeaacd89abE
  │    2:        0x10edb5669 - __ZN5servo4main28_$u7b$$u7b$closure$u7d$$u7d$17h9d9b5b0a24be810cE
  │    3:        0x111c85410 - __ZN3std9panicking20rust_panic_with_hook17h4d29a1b082e04079E
  │    4:        0x111c84e5c - __ZN3std9panicking18continue_panic_fmt17h4a5eb546816972c4E
  │    5:        0x111c84db0 - __ZN3std9panicking15begin_panic_fmt17h1bef9ef925c1eb3eE
  │    6:        0x111261711 - __ZN6canvas12webgl_thread9WebGLImpl5apply17h0d8005f53d521abcE
  │    7:        0x111259bb7 - __ZN6canvas12webgl_thread21WebGLThread$LT$VR$GT$20handle_webgl_command17h53f4cd3731b70ca0E
  │    8:        0x111223816 - __ZN3std10sys_common9backtrace28__rust_begin_short_backtrace17h76a2e1f313bceaf9E.llvm.10547903177341280181
  │    9:        0x1112a6561 - __ZN3std9panicking3try7do_call17h150ae451a94dc9a7E.llvm.5012549804399729135
  │   10:        0x111c8dc4e - ___rust_maybe_catch_panic
  │   11:        0x1112a6771 - __ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h6a94b1439869bf36E
  │   12:        0x111c737fd - __ZN83_$LT$alloc..boxed..Box$LT$F$GT$$u20$as$u20$core..ops..function..FnOnce$LT$A$GT$$GT$9call_once17h3ec79158893c158bE
  │   13:        0x111c8d12d - __ZN3std3sys4unix6thread6Thread3new12thread_start17h42de43c740cec52bE
  │   14:     0x7fff58df6660 - __pthread_body
  │   15:     0x7fff58df650c - __pthread_start

  ▶ CRASH [expected OK] /_webgl/conformance/rendering/scissor-rect-repeated-rendering.html
  │ 
  │ VMware, Inc.
  │ softpipe
  │ 3.3 (Core Profile) Mesa 18.3.0-devel
  │ [2019-06-11T16:54:36Z ERROR canvas::webgl_thread] Last GL operation failed: SetViewport(64, 64, 64, 64)
  │ assertion failed: `(left == right)`
  │   left: `1282`,
  │  right: `0`: Unexpected WebGL error: 0x502 (1282) (thread WebGLThread, at components/canvas/webgl_thread.rs:1555)
  │ stack backtrace:
  │    0:        0x110f1b30e - __ZN9backtrace9backtrace5trace17h2aa3bfd5ea4aba44E
  │    1:        0x110f1a3ac - __ZN72_$LT$backtrace..capture..Backtrace$u20$as$u20$core..default..Default$GT$7default17hc9b000eeaacd89abE
  │    2:        0x10e1f7669 - __ZN5servo4main28_$u7b$$u7b$closure$u7d$$u7d$17h9d9b5b0a24be810cE
  │    3:        0x1110c7410 - __ZN3std9panicking20rust_panic_with_hook17h4d29a1b082e04079E
  │    4:        0x1110c6e5c - __ZN3std9panicking18continue_panic_fmt17h4a5eb546816972c4E
  │    5:        0x1110c6db0 - __ZN3std9panicking15begin_panic_fmt17h1bef9ef925c1eb3eE
  │    6:        0x1106a3711 - __ZN6canvas12webgl_thread9WebGLImpl5apply17h0d8005f53d521abcE
  │    7:        0x11069bbb7 - __ZN6canvas12webgl_thread21WebGLThread$LT$VR$GT$20handle_webgl_command17h53f4cd3731b70ca0E
  │    8:        0x110665816 - __ZN3std10sys_common9backtrace28__rust_begin_short_backtrace17h76a2e1f313bceaf9E.llvm.10547903177341280181
  │    9:        0x1106e8561 - __ZN3std9panicking3try7do_call17h150ae451a94dc9a7E.llvm.5012549804399729135
  │   10:        0x1110cfc4e - ___rust_maybe_catch_panic
  │   11:        0x1106e8771 - __ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h6a94b1439869bf36E
  │   12:        0x1110b57fd - __ZN83_$LT$alloc..boxed..Box$LT$F$GT$$u20$as$u20$core..ops..function..FnOnce$LT$A$GT$$GT$9call_once17h3ec79158893c158bE
  │   13:        0x1110cf12d - __ZN3std3sys4unix6thread6Thread3new12thread_start17h42de43c740cec52bE
  │   14:     0x7fff58df6660 - __pthread_body
  │   15:     0x7fff58df650c - __pthread_start
@jdm
Copy link
Member

jdm commented Jun 11, 2019

One difference that occurs when running tests is that we run them under OSMesa.

@bors-servo
Copy link
Contributor

bors-servo commented Jun 11, 2019

💔 Test failed - status-taskcluster

@bors-servo
Copy link
Contributor

bors-servo commented Jun 12, 2019

The latest upstream changes (presumably #23468) made this pull request unmergeable. Please resolve the merge conflicts.

@zakorgy zakorgy force-pushed the szeged:texture-sharing-iosurface branch from 5a75217 to dfc18a6 Jun 24, 2019
@zakorgy zakorgy force-pushed the szeged:texture-sharing-iosurface branch from dfc18a6 to b92d407 Jun 24, 2019
bors-servo added a commit that referenced this pull request Oct 24, 2019
Use surfman for managing GL surfaces

<!-- Please describe your changes on the following line: -->

Replaces texture sharing with surfman surface sharing.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #23509  and #24256
- [x] These changes do not require tests because this is backend gfx

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this pull request Oct 24, 2019
Use surfman for managing GL surfaces

<!-- Please describe your changes on the following line: -->

Replaces texture sharing with surfman surface sharing.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #23509  and #24256
- [x] These changes do not require tests because this is backend gfx

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this pull request Oct 24, 2019
Use surfman for managing GL surfaces

<!-- Please describe your changes on the following line: -->

Replaces texture sharing with surfman surface sharing.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #23509  and #24256
- [x] These changes do not require tests because this is backend gfx

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this pull request Oct 24, 2019
Use surfman for managing GL surfaces

<!-- Please describe your changes on the following line: -->

Replaces texture sharing with surfman surface sharing.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #23509  and #24256
- [x] These changes do not require tests because this is backend gfx

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this pull request Oct 25, 2019
Use surfman for managing GL surfaces

<!-- Please describe your changes on the following line: -->

Replaces texture sharing with surfman surface sharing.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #23509  and #24256
- [x] These changes do not require tests because this is backend gfx

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this pull request Oct 26, 2019
Use surfman for managing GL surfaces

<!-- Please describe your changes on the following line: -->

Replaces texture sharing with surfman surface sharing.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #23509  and #24256
- [x] These changes do not require tests because this is backend gfx

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this pull request Oct 28, 2019
Use surfman for managing GL surfaces

<!-- Please describe your changes on the following line: -->

Replaces texture sharing with surfman surface sharing.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #23509  and #24256
- [x] These changes do not require tests because this is backend gfx

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this pull request Oct 28, 2019
Use surfman for managing GL surfaces

<!-- Please describe your changes on the following line: -->

Replaces texture sharing with surfman surface sharing.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #23509  and #24256
- [x] These changes do not require tests because this is backend gfx

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this pull request Oct 28, 2019
Use surfman for managing GL surfaces

<!-- Please describe your changes on the following line: -->

Replaces texture sharing with surfman surface sharing.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #23509  and #24256
- [x] These changes do not require tests because this is backend gfx

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this pull request Oct 29, 2019
Use surfman for managing GL surfaces

<!-- Please describe your changes on the following line: -->

Replaces texture sharing with surfman surface sharing.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #23509  and #24256
- [x] These changes do not require tests because this is backend gfx

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this pull request Oct 29, 2019
Use surfman for managing GL surfaces

<!-- Please describe your changes on the following line: -->

Replaces texture sharing with surfman surface sharing.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #23509  and #24256
- [x] These changes do not require tests because this is backend gfx

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this pull request Oct 29, 2019
Use surfman for managing GL surfaces

<!-- Please describe your changes on the following line: -->

Replaces texture sharing with surfman surface sharing.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #23509  and #24256
- [x] These changes do not require tests because this is backend gfx

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this pull request Oct 29, 2019
Use surfman for managing GL surfaces

<!-- Please describe your changes on the following line: -->

Replaces texture sharing with surfman surface sharing.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #23509  and #24256
- [x] These changes do not require tests because this is backend gfx

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this pull request Oct 29, 2019
Use surfman for managing GL surfaces

<!-- Please describe your changes on the following line: -->

Replaces texture sharing with surfman surface sharing.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #23509  and #24256
- [x] These changes do not require tests because this is backend gfx

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this pull request Oct 29, 2019
Use surfman for managing GL surfaces

<!-- Please describe your changes on the following line: -->

Replaces texture sharing with surfman surface sharing.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #23509  and #24256
- [x] These changes do not require tests because this is backend gfx

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this pull request Oct 30, 2019
Use surfman for managing GL surfaces

<!-- Please describe your changes on the following line: -->

Replaces texture sharing with surfman surface sharing.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #23509  and #24256
- [x] These changes do not require tests because this is backend gfx

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this pull request Oct 30, 2019
Use surfman for managing GL surfaces

<!-- Please describe your changes on the following line: -->

Replaces texture sharing with surfman surface sharing.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #23509  and #24256
- [x] These changes do not require tests because this is backend gfx

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this pull request Oct 30, 2019
Use surfman for managing GL surfaces

<!-- Please describe your changes on the following line: -->

Replaces texture sharing with surfman surface sharing.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #23509  and #24256
- [x] These changes do not require tests because this is backend gfx

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this pull request Oct 30, 2019
Use surfman for managing GL surfaces

<!-- Please describe your changes on the following line: -->

Replaces texture sharing with surfman surface sharing.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #23509  and #24256
- [x] These changes do not require tests because this is backend gfx

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this pull request Oct 30, 2019
Use surfman for managing GL surfaces

<!-- Please describe your changes on the following line: -->

Replaces texture sharing with surfman surface sharing.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #23509  and #24256
- [x] These changes do not require tests because this is backend gfx

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this pull request Oct 31, 2019
Use surfman for managing GL surfaces

<!-- Please describe your changes on the following line: -->

Replaces texture sharing with surfman surface sharing.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #23509  and #24256
- [x] These changes do not require tests because this is backend gfx

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this pull request Oct 31, 2019
Use surfman for managing GL surfaces

<!-- Please describe your changes on the following line: -->

Replaces texture sharing with surfman surface sharing.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #23509  and #24256
- [x] These changes do not require tests because this is backend gfx

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this pull request Oct 31, 2019
Use surfman for managing GL surfaces

<!-- Please describe your changes on the following line: -->

Replaces texture sharing with surfman surface sharing.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #23509  and #24256
- [x] These changes do not require tests because this is backend gfx

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this pull request Oct 31, 2019
Use surfman for managing GL surfaces

<!-- Please describe your changes on the following line: -->

Replaces texture sharing with surfman surface sharing.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #23509  and #24256
- [x] These changes do not require tests because this is backend gfx

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this pull request Oct 31, 2019
Use surfman for managing GL surfaces

<!-- Please describe your changes on the following line: -->

Replaces texture sharing with surfman surface sharing.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #23509  and #24256
- [x] These changes do not require tests because this is backend gfx

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this pull request Oct 31, 2019
Use surfman for managing GL surfaces

<!-- Please describe your changes on the following line: -->

Replaces texture sharing with surfman surface sharing.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #23509  and #24256
- [x] These changes do not require tests because this is backend gfx

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this pull request Nov 1, 2019
Use surfman for managing GL surfaces

<!-- Please describe your changes on the following line: -->

Replaces texture sharing with surfman surface sharing.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #23509  and #24256
- [x] These changes do not require tests because this is backend gfx

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this pull request Nov 1, 2019
Use surfman for managing GL surfaces

<!-- Please describe your changes on the following line: -->

Replaces texture sharing with surfman surface sharing.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #23509  and #24256
- [x] These changes do not require tests because this is backend gfx

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
@bors-servo bors-servo closed this in 4e22889 Nov 1, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked issues

Successfully merging this pull request may close these issues.

7 participants
You can’t perform that action at this time.