Closed Bug 1322650 Opened 3 years ago Closed 2 years ago

[geckoview] [e10s] Make WebGL work

Categories

(Core Graveyard :: Embedding: APIs, defect)

defect
Not set

Tracking

(firefox55 fixed)

RESOLVED FIXED
mozilla55
Tracking Status
firefox55 --- fixed

People

(Reporter: snorp, Assigned: snorp)

References

(Depends on 1 open bug)

Details

Attachments

(12 files, 8 obsolete files)

59 bytes, text/x-review-board-request
jchen
: review+
Details
59 bytes, text/x-review-board-request
jgilbert
: review+
Details
59 bytes, text/x-review-board-request
jgilbert
: review+
Details
59 bytes, text/x-review-board-request
jchen
: review+
Details
59 bytes, text/x-review-board-request
jhlin
: review+
Details
59 bytes, text/x-review-board-request
jhlin
: review+
Details
59 bytes, text/x-review-board-request
jgilbert
: review+
Details
59 bytes, text/x-review-board-request
jchen
: review+
Details
59 bytes, text/x-review-board-request
jchen
: review+
Details
59 bytes, text/x-review-board-request
jchen
: review+
Details
59 bytes, text/x-review-board-request
jchen
: review+
Details
59 bytes, text/x-review-board-request
jhlin
: review+
Details
It's either broken or using readback right now with e10s.
Comment on attachment 8855600 [details]
Bug 1322650 - Make video decoding work with new SurfaceTexture API

https://reviewboard.mozilla.org/r/126460/#review130304

::: dom/media/platforms/android/RemoteDataDecoder.cpp:178
(Diff revision 1)
>    {
>    }
>  
>    RefPtr<InitPromise> Init() override
>    {
> -    mSurfaceTexture = AndroidSurfaceTexture::Create();
> +    jni::Object::LocalRef surf = SurfaceAllocator::AcquireSurface(mConfig.mDisplay.width, mConfig.mDisplay.height, false);

The size of texture should be `mConfig.mImage` rather than `mConfig.mDisplay`.
Not really a problem because decoder/producer will override our setting anyway. :)
Attachment #8855600 - Flags: review?(jolin) → review+
Comment on attachment 8855601 [details]
Bug 1322650 - Don't use inout param for Surface in ICodec

https://reviewboard.mozilla.org/r/126462/#review130308

Good catch!Thanks a lot。
Attachment #8855601 - Flags: review?(jolin) → review+
Comment on attachment 8855604 [details]
Bug 1322650 - Update JNI bindings

https://reviewboard.mozilla.org/r/126468/#review130698
Attachment #8855604 - Flags: review?(nchen) → review+
Comment on attachment 8855596 [details]
Bug 1322650 - Add GeckoSurfaceTexture, GeckoSurface and associated Android Service

https://reviewboard.mozilla.org/r/126452/#review130700

::: mobile/android/base/Makefile.in:575
(Diff revision 1)
>  aidl_src_path := $(srcdir)/aidl
>  aidl_target_path := generated
> +gfx_pkg := org/mozilla/gecko/gfx
>  media_pkg := org/mozilla/gecko/media
>  
> +$(aidl_target_path)/$(gfx_pkg)/%.java:$(aidl_geckoview_src_path)/$(gfx_pkg)/%.aidl

Should add the .aidl to the GECKOVIEW_AIDLS list below instead of adding these lines.

::: mobile/android/geckoview/src/main/aidl/org/mozilla/gecko/gfx/ISurfaceAllocator.aidl:9
(Diff revision 1)
> +
> +package org.mozilla.gecko.gfx;
> +
> +import org.mozilla.gecko.gfx.GeckoSurface;
> +
> +interface ISurfaceAllocator {

I think this should be integrated into IProcessManager, because IProcessManager is always available in a child prorcess and you won't need to create a separate SurfaceAllocatorService and wait on it to start.

::: mobile/android/geckoview/src/main/java/org/mozilla/gecko/gfx/GeckoSurface.java:28
(Diff revision 1)
> +
> +    private static HashMap<Long, GeckoSurfaceTexture> sSurfaceTextures = new HashMap<Long, GeckoSurfaceTexture>();
> +
> +    private long mHandle;
> +    private boolean mIsSingleBuffer;
> +    private AtomicBoolean mIsAvailable;

Just use `volatile boolean`

::: mobile/android/geckoview/src/main/java/org/mozilla/gecko/gfx/GeckoSurface.java:85
(Diff revision 1)
> +        out.writeLong(mHandle);
> +        out.writeByte((byte) (mIsSingleBuffer ? 1 : 0));
> +        out.writeByte((byte) (mIsAvailable.get() ? 1 : 0));
> +    }
> +
> +    @WrapForJNI(exceptionMode = "ignore")

Get rid of all the `exceptionMode = "ignore"`. "ignore" should only be used in limited circumstances.

::: mobile/android/geckoview/src/main/java/org/mozilla/gecko/gfx/GeckoSurfaceTexture.java:55
(Diff revision 1)
> +    public int getTexName() {
> +        return mTexName;
> +    }
> +
> +    @WrapForJNI(exceptionMode = "ignore")
> +    public boolean getIsSingleBuffer() {

`public boolean isSingleBuffer()`

::: mobile/android/geckoview/src/main/java/org/mozilla/gecko/gfx/GeckoSurfaceTexture.java:98
(Diff revision 1)
> +        }
> +
> +        long handle = sNextHandle.getAndIncrement();
> +        int texName = nativeAcquireTexture();
> +
> +        GeckoSurfaceTexture gst;

final

::: mobile/android/geckoview/src/main/java/org/mozilla/gecko/gfx/GeckoSurfaceTexture.java:119
(Diff revision 1)
> +
> +        return gst;
> +    }
> +
> +    public static void dispose(long handle) {
> +        GeckoSurfaceTexture gst;

final

::: mobile/android/geckoview/src/main/java/org/mozilla/gecko/gfx/SurfaceAllocator.java:68
(Diff revision 1)
> +
> +        // Release the SurfaceTexture on the other side
> +        try {
> +            sConnection.getAllocator().releaseSurface(surface.getHandle());
> +        } catch (RemoteException e) {
> +            Log.w(LOGTAG, "Failed to release surface texture: " + e);

`Log.w(LOGTAG, "Failed to release surface texture", e);`

::: mobile/android/geckoview/src/main/java/org/mozilla/gecko/gfx/SurfaceAllocator.java:75
(Diff revision 1)
> +
> +        // And now our Surface
> +        try {
> +            surface.release();
> +        } catch (Exception e) {
> +            Log.w(LOGTAG, "Failed to release surface: " + e);

Log.w(LOGTAG, "Failed to release surface", e);
Attachment #8855596 - Flags: review?(nchen)
Comment on attachment 8855599 [details]
Bug 1322650 - Allow access to TexturePoolOGL from Java

https://reviewboard.mozilla.org/r/126458/#review130974
Attachment #8855599 - Flags: review?(nchen) → review+
Comment on attachment 8855603 [details]
Bug 1322650 - Adjust Android Flash support to API changes

https://reviewboard.mozilla.org/r/126466/#review130982

::: dom/plugins/base/nsNPAPIPluginInstance.cpp:890
(Diff revision 1)
> -  if (!surface) {
> +  jni::Object::LocalRef obj = java::SurfaceAllocator::AcquireSurface(0, 0, false);
> +  if (!obj) {
>      return nullptr;
>    }
>  
> +  java::GeckoSurface::LocalRef surf = java::GeckoSurface::LocalRef(java::GeckoSurface::Ref::From(obj));

Just use `java::GeckoSurface::LocalRef surf = java::SurfaceAllocator::AcquireSurface(0, 0, false);`. No need for `obj`.

::: dom/plugins/base/nsNPAPIPluginInstance.cpp:894
(Diff revision 1)
>  
> +  java::GeckoSurface::LocalRef surf = java::GeckoSurface::LocalRef(java::GeckoSurface::Ref::From(obj));
> +
>    nsCOMPtr<nsIRunnable> frameCallback = NewRunnableMethod(this, &nsNPAPIPluginInstance::OnSurfaceTextureFrameAvailable);
> -  surface->SetFrameAvailableCallback(frameCallback);
> -  return surface.forget();
> +
> +  PluginTextureListener::Init();

Don't need this. You only need to call `Init` manually when you have static methods.

::: dom/plugins/base/nsNPAPIPluginInstance.cpp:897
(Diff revision 1)
>    nsCOMPtr<nsIRunnable> frameCallback = NewRunnableMethod(this, &nsNPAPIPluginInstance::OnSurfaceTextureFrameAvailable);
> -  surface->SetFrameAvailableCallback(frameCallback);
> -  return surface.forget();
> +
> +  PluginTextureListener::Init();
> +
> +  java::SurfaceTextureListener::LocalRef listener = java::SurfaceTextureListener::New();
> +  PluginTextureListener::AttachNative(listener, MakeUnique<PluginTextureListener>(frameCallback.get()));

I don't think `DisposeNative` ever gets called.

::: dom/plugins/base/nsNPAPIPluginInstance.cpp:900
(Diff revision 1)
> +
> +  java::SurfaceTextureListener::LocalRef listener = java::SurfaceTextureListener::New();
> +  PluginTextureListener::AttachNative(listener, MakeUnique<PluginTextureListener>(frameCallback.get()));
> +
> +  java::GeckoSurfaceTexture::LocalRef gst = java::GeckoSurfaceTexture::Lookup(surf->GetHandle());
> +  auto st = java::sdk::SurfaceTexture::LocalRef(java::sdk::SurfaceTexture::Ref::From(gst));

`const auto& st = java::sdk::SurfaceTexture::Ref::From(gst);`. Don't need to make a new local reference.
Attachment #8855603 - Flags: review?(nchen)
Comment on attachment 8855596 [details]
Bug 1322650 - Add GeckoSurfaceTexture, GeckoSurface and associated Android Service

https://reviewboard.mozilla.org/r/126452/#review130700

> Should add the .aidl to the GECKOVIEW_AIDLS list below instead of adding these lines.

Whoops, rebase snafu.

> I think this should be integrated into IProcessManager, because IProcessManager is always available in a child prorcess and you won't need to create a separate SurfaceAllocatorService and wait on it to start.

The problem is that this service needs to live wherever the compositor is, whereas IProcessManager always talks to the main (parent) process.
Attachment #8855597 - Attachment is obsolete: true
Attachment #8855597 - Flags: review?(jgilbert)
Attachment #8855598 - Attachment is obsolete: true
Attachment #8855598 - Flags: review?(jgilbert)
Attachment #8855599 - Attachment is obsolete: true
Attachment #8855600 - Attachment is obsolete: true
Attachment #8855601 - Attachment is obsolete: true
Attachment #8855602 - Attachment is obsolete: true
Attachment #8855602 - Flags: review?(jgilbert)
Attachment #8855603 - Attachment is obsolete: true
Attachment #8855604 - Attachment is obsolete: true
Comment on attachment 8855596 [details]
Bug 1322650 - Add GeckoSurfaceTexture, GeckoSurface and associated Android Service

https://reviewboard.mozilla.org/r/126452/#review131568

::: mobile/android/base/Makefile.in:573
(Diff revision 2)
>  
>  # Generate Java binder interfaces from AIDL files.
>  GECKOVIEW_AIDLS = \
>    org/mozilla/gecko/IGeckoEditableChild.aidl \
>    org/mozilla/gecko/IGeckoEditableParent.aidl \
> +  org/mozilla/gecko/gfx/GeckoSurface.aidl \

Don't need `GeckoSurface.aidl` in the list
Attachment #8855596 - Flags: review?(nchen) → review+
Comment on attachment 8857104 [details]
Bug 1322650 - Use SurfaceTexture for WebGL on Android in E10S

https://reviewboard.mozilla.org/r/129010/#review131710

::: gfx/gl/AndroidSurfaceTexture.h:14
(Diff revision 1)
> -#include "mozilla/Monitor.h"
> -
> -#include "GeneratedJNIWrappers.h"
>  #include "SurfaceTexture.h"
>  
> +typedef uint64_t AndroidSurfaceTextureHandle;

Are you sure you don't mean void*?

::: gfx/gl/SharedSurface.h:310
(Diff revision 1)
>      already_AddRefed<layers::SharedSurfaceTextureClient> NewTexClient(const gfx::IntSize& size);
>  
>      static void RecycleCallback(layers::TextureClient* tc, void* /*closure*/);
>  
>      // Auto-deletes surfs of the wrong type.
> -    bool Recycle(layers::SharedSurfaceTextureClient* texClient);
> +    virtual bool Recycle(layers::SharedSurfaceTextureClient* texClient);

This is pretty dangerous.

::: gfx/gl/SharedSurfaceEGL.cpp:254
(Diff revision 1)
> +}
> +
> +void
> +SharedSurface_SurfaceTexture::LockProdImpl()
> +{
> +    if (!mSurface->GetAvailable()) {

LockProd doesn't support being fallible.
Instead, MOZ_RELEASE_ASSERT(GetAvailable()).

::: gfx/gl/SharedSurfaceEGL.cpp:270
(Diff revision 1)
> +    if (!mSurface->GetAvailable()) {
> +        return;
> +    }
> +
> +    mGL->SwapBuffers();
> +    mSurface->SetAvailable(false);

This isn't viable, unfortunately. There's a bunch of places we'd unlock at.

Conceptually, this fits better as ProducerRelease, but when it comes down to it, I don't think we have the right architecture for this sort of requirement yet. We can add it, though. (layers change)

::: gfx/gl/SharedSurfaceEGL.cpp:284
(Diff revision 1)
> +}
> +
> +bool
> +SharedSurface_SurfaceTexture::ReadbackBySharedHandle(gfx::DataSourceSurface* out_surface)
> +{
> +    return false;

Leave { return false; } definitions in the header.

::: gfx/gl/SharedSurfaceEGL.cpp:327
(Diff revision 1)
> +
> +bool
> +SurfaceFactory_SurfaceTexture::Recycle(layers::SharedSurfaceTextureClient* texClient)
> +{
> +    SharedSurface_SurfaceTexture* surf = static_cast<SharedSurface_SurfaceTexture*>(texClient->Surf());
> +    surf->JavaSurface()->SetAvailable(true);

Doesn't this mean that all surfaces returned by SurfaceFactory::NewTexClient (both recycled and fresh) would be available:true? 
If so, you can instead override ShSurf::WaitForBufferOwnership to just call SetAvailable(true).

::: gfx/layers/GLImages.h:84
(Diff revision 1)
> -  RefPtr<gl::AndroidSurfaceTexture> mSurfaceTexture;
> +  AndroidSurfaceTextureHandle mHandle;
>    gfx::IntSize mSize;
>    gl::OriginPos mOriginPos;

Just make these public and const.

::: gfx/layers/ipc/LayersSurfaces.ipdlh:63
(Diff revision 1)
>    double scaleFactor;
>    bool isOpaque;
>  };
>  
>  struct SurfaceTextureDescriptor {
> -  uintptr_t surfTex;
> +  uint64_t handle;

Probably uintptr_t, since this is really a pointer, yeah?

::: gfx/layers/opengl/TextureHostOGL.cpp:60
(Diff revision 1)
>  
>  #ifdef MOZ_WIDGET_ANDROID
>      case SurfaceDescriptor::TSurfaceTextureDescriptor: {
>        const SurfaceTextureDescriptor& desc = aDesc.get_SurfaceTextureDescriptor();
> +      java::GeckoSurfaceTexture::LocalRef surfaceTexture = java::GeckoSurfaceTexture::Lookup(desc.handle());
> +      if (!surfaceTexture) {

Should we assert here?

::: gfx/layers/opengl/TextureHostOGL.cpp:399
(Diff revision 1)
>    MOZ_ASSERT(mSurfTex);
>  
>    gfx::Matrix4x4 ret;
> -  mSurfTex->GetTransformMatrix(ret);
>  
> +  AndroidSurfaceTexture::GetTransformMatrix(java::sdk::SurfaceTexture::LocalRef(java::sdk::SurfaceTexture::Ref::From(mSurfTex)), ret);

It would be nice to split this up.
Like:
const auto& ref = java::sdk::SurfaceTexture::LocalRef(java::sdk::SurfaceTexture::Ref::From(mSurfTex));
AndroidSurfaceTexture::GetTransformMatrix(ref, ret);

::: gfx/layers/opengl/TextureHostOGL.cpp:433
(Diff revision 1)
> +  // This advances the SurfaceTexture's internal buffer queue. We only want to do this
> +  // once per transaction. We can then composite that texture as many times as needed.

State explicitly that calling this every composite could cause this texture to de-sync with the rest of the page content.

::: gfx/layers/opengl/TextureHostOGL.cpp:435
(Diff revision 1)
> +    return;
> +  }
> +
> +  // This advances the SurfaceTexture's internal buffer queue. We only want to do this
> +  // once per transaction. We can then composite that texture as many times as needed.
> +  mSurfTex->UpdateTexImage();

Can you put this in the SurfaceTextureSourcec ctor? I think that would Do The Right Thing in SurfaceTextureHost::Lock() with the if (!mTextureSource) path.

::: gfx/layers/opengl/TextureHostOGL.cpp:491
(Diff revision 1)
> +  // We don't want to wait until it's done compositing, there are fences that protect
> +  // us from problems there. Send a message to recycle this surface immediately.
> +  CallNotifyNotUsed();

Is this just an optimization? If so, can we avoid it for simplicity's sake?
Attachment #8857104 - Flags: review?(jgilbert) → review-
Comment on attachment 8857105 [details]
Bug 1322650 - Disable blitting from a SurfaceTexture

https://reviewboard.mozilla.org/r/129012/#review131734
Attachment #8857105 - Flags: review?(jgilbert) → review+
Comment on attachment 8857109 [details]
Bug 1322650 - Support a 'continuous' mode for SurfaceTexture

https://reviewboard.mozilla.org/r/129020/#review131738

::: dom/media/platforms/android/RemoteDataDecoder.cpp:136
(Diff revision 1)
>          return;
>        }
>  
>        if (size > 0) {
>          RefPtr<layers::Image> img = new SurfaceTextureImage(
> -          mDecoder->mSurfaceHandle, inputInfo.mImageSize,
> +          mDecoder->mSurfaceHandle, inputInfo.mImageSize, false /* NOT continuous */,

If this is `false`, where's the `true` for Flash?
Attachment #8857109 - Flags: review?(jgilbert) → review+
Comment on attachment 8857107 [details]
Bug 1322650 - Make video decoding work with new SurfaceTexture API

https://reviewboard.mozilla.org/r/129016/#review131944
Attachment #8857107 - Flags: review?(jolin) → review+
Comment on attachment 8857108 [details]
Bug 1322650 - Don't use inout param for Surface in ICodec

https://reviewboard.mozilla.org/r/129018/#review131946
Attachment #8857108 - Flags: review?(jolin) → review+
Comment on attachment 8857114 [details]
Bug 1322650 - Don't use AndroidBridge to get API version in media stack

https://reviewboard.mozilla.org/r/129030/#review131948
Attachment #8857114 - Flags: review?(jolin) → review+
Comment on attachment 8857106 [details]
Bug 1322650 - Allow access to TexturePoolOGL from Java

https://reviewboard.mozilla.org/r/129014/#review132052
Attachment #8857106 - Flags: review?(nchen) → review+
Comment on attachment 8857110 [details]
Bug 1322650 - Adjust Android Flash support to API changes

https://reviewboard.mozilla.org/r/129022/#review132062

::: dom/plugins/base/nsNPAPIPluginInstance.cpp:896
(Diff revision 1)
> -  surface->SetFrameAvailableCallback(frameCallback);
> -  return surface.forget();
> +
> +  java::SurfaceTextureListener::LocalRef listener = java::SurfaceTextureListener::New();
> +
> +  java::GeckoSurfaceTexture::LocalRef gst = java::GeckoSurfaceTexture::Lookup(surf->GetHandle());
> +  const auto& st = java::sdk::SurfaceTexture::Ref::From(gst);
> +  st->SetOnFrameAvailableListener(listener);

I think you removed the `AttachNative` call? In that case the native call in `SurfaceTextureListener` will fail.
Attachment #8857110 - Flags: review?(nchen)
Comment on attachment 8857111 [details]
Bug 1322650 - Update JNI bindings

https://reviewboard.mozilla.org/r/129024/#review132064
Attachment #8857111 - Flags: review?(nchen) → review+
Comment on attachment 8857112 [details]
Bug 1322650 - Force static accessors for some types during JNI bindings generation

https://reviewboard.mozilla.org/r/129026/#review132066
Attachment #8857112 - Flags: review?(nchen) → review+
Comment on attachment 8857113 [details]
Bug 1322650 - Add jni::GetAPIVersion() to get Android API version

https://reviewboard.mozilla.org/r/129028/#review132070

::: widget/android/jni/Utils.h:149
(Diff revision 1)
>   * Returns whether Gecko is running in a Fennec environment, as determined by
>   * the presence of the GeckoApp class.
>   */
>  bool IsFennec();
>  
> +int GetAPIVersion();

Add comment
Attachment #8857113 - Flags: review?(nchen) → review+
Comment on attachment 8857104 [details]
Bug 1322650 - Use SurfaceTexture for WebGL on Android in E10S

https://reviewboard.mozilla.org/r/129010/#review131710

> Are you sure you don't mean void*?

I don't, see below regarding the cross-process thing.

> Just make these public and const.

That doesn't follow the convention used in this class and the others in the file...

> Probably uintptr_t, since this is really a pointer, yeah?

It's not, as this goes cross-process. The handle (which I've changed to uint32_t) is created behind the scenes using Android binder.

> Can you put this in the SurfaceTextureSourcec ctor? I think that would Do The Right Thing in SurfaceTextureHost::Lock() with the if (!mTextureSource) path.

There are some changes in the "continuous mode" patch that make that a little harder to follow than the current way.

> Is this just an optimization? If so, can we avoid it for simplicity's sake?

It is an optimization, but without it we end up using one more buffer than necessary, which could be a fair amount of memory.
Comment on attachment 8857110 [details]
Bug 1322650 - Adjust Android Flash support to API changes

https://reviewboard.mozilla.org/r/129022/#review134682

::: dom/plugins/base/nsNPAPIPluginInstance.cpp:897
(Diff revision 4)
> -  return surface.forget();
> +  java::SurfaceTextureListener::LocalRef listener = java::SurfaceTextureListener::New();
> +
> +  PluginTextureListener::AttachNative(listener, MakeUnique<PluginTextureListener>(frameCallback.get()));
> +
> +  java::GeckoSurfaceTexture::LocalRef gst = java::GeckoSurfaceTexture::Lookup(surf->GetHandle());
> +  const auto& st = java::sdk::SurfaceTexture::Ref::From(gst);

`gst` can be null here

::: mobile/android/geckoview/src/main/java/org/mozilla/gecko/gfx/SurfaceTextureListener.java:25
(Diff revision 4)
> +    @WrapForJNI(dispatchTo = "gecko") @Override // JNIObject
> +    protected native void disposeNative();
> +
>      @Override
> -    protected void disposeNative() {
> -        // SurfaceTextureListener is disposed inside AndroidSurfaceTexture.
> +    protected void finalize() {
> +        disposeNative();

We should clear the callback in `PluginTextureListener` ASAP, when it's no longer the current listener. It can take a long time for the finalizer to be called, if ever. In that case we'll leak a lot of things.
Attachment #8857110 - Flags: review?(nchen) → review+
Now that we're able to pass Surface across processes through IPDL, it seems feasible to use PVideoDecoder on Android to replace ICodec and unify Gecko OOP decoding solution.

James and Jean-Yves, do you think it's worth filing a bug to explore that?
Flags: needinfo?(snorp)
Flags: needinfo?(jyavenard)
(In reply to John Lin [:jolin][:jhlin] from comment #72)
> Now that we're able to pass Surface across processes through IPDL, it seems
> feasible to use PVideoDecoder on Android to replace ICodec and unify Gecko
> OOP decoding solution.
> 
> James and Jean-Yves, do you think it's worth filing a bug to explore that?

Sounds like a good idea to me!
Flags: needinfo?(snorp)
ditto.
Flags: needinfo?(jyavenard)
Comment on attachment 8857104 [details]
Bug 1322650 - Use SurfaceTexture for WebGL on Android in E10S

https://reviewboard.mozilla.org/r/129010/#review138336

::: gfx/gl/SharedSurfaceEGL.cpp:219
(Diff revision 3)
> +}
> +
> +bool
> +SharedSurface_SurfaceTexture::IsAvailable()
> +{
> +    return true;

Leave this in the header if it's just always returning true.

::: gfx/gl/SharedSurfaceEGL.cpp:248
(Diff revision 3)
> +}
> +
> +layers::TextureFlags
> +SharedSurface_SurfaceTexture::GetTextureFlags() const
> +{
> +    return layers::TextureFlags::DEALLOCATE_CLIENT;

Leave this in the header since it's returning a constant.

::: gfx/gl/SharedSurfaceEGL.cpp:266
(Diff revision 3)
> +void
> +SharedSurface_SurfaceTexture::UnlockProdImpl()
> +{
> +    MOZ_RELEASE_ASSERT(mSurface->GetAvailable());
> +
> +    GLContextEGL::Cast(mGL)->SetEGLSurfaceOverride(mOrigEglSurface);

MOZ_ASSERT(GetEGLSurfaceOverride() == mOrigEglSurface);

::: gfx/gl/SharedSurfaceEGL.cpp:318
(Diff revision 3)
> +    if (!surface) {
> +        // Try multi-buffer mode
> +        surface = java::SurfaceAllocator::AcquireSurface(size.width, size.height, false);
> +        if (!surface) {
> +            // Give up
> +            return nullptr;

do{}while is better for this fallback pattern.

::: gfx/gl/SharedSurfaceEGL.cpp:322
(Diff revision 3)
> +    jni::Object::LocalRef surface = java::SurfaceAllocator::AcquireSurface(size.width, size.height, true);
> +    if (!surface) {
> +        // Try multi-buffer mode
> +        surface = java::SurfaceAllocator::AcquireSurface(size.width, size.height, false);
> +        if (!surface) {
> +            // Give up

NS_WARNING?

::: gfx/gl/SharedSurfaceEGL.cpp:322
(Diff revision 3)
> +    jni::Object::LocalRef surface = java::SurfaceAllocator::AcquireSurface(size.width, size.height, true);
> +    if (!surface) {
> +        // Try multi-buffer mode
> +        surface = java::SurfaceAllocator::AcquireSurface(size.width, size.height, false);
> +        if (!surface) {
> +            // Give up



::: gfx/layers/opengl/TextureHostOGL.cpp:491
(Diff revision 3)
> +  // We don't want to wait until it's done compositing, there are fences that protect
> +  // us from problems there. Send a message to recycle this surface immediately.
> +  CallNotifyNotUsed();

Drop this optimization. I don't like the complexity-to-value tradeoff here. We really want to keep these lifetime cycles simple.

Leave this for a follow-up bug, if anything.
Attachment #8857104 - Flags: review?(jgilbert) → review-
Comment on attachment 8857104 [details]
Bug 1322650 - Use SurfaceTexture for WebGL on Android in E10S

https://reviewboard.mozilla.org/r/129010/#review139388
Attachment #8857104 - Flags: review?(jgilbert) → review+
Assignee: nobody → snorp
Pushed by jwillcox@mozilla.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/b50714bd8d10
Add GeckoSurfaceTexture, GeckoSurface and associated Android Service r=jchen
https://hg.mozilla.org/integration/mozilla-inbound/rev/9badb2705567
Use SurfaceTexture for WebGL on Android in E10S r=jgilbert
https://hg.mozilla.org/integration/mozilla-inbound/rev/3644926d994a
Disable blitting from a SurfaceTexture r=jgilbert
https://hg.mozilla.org/integration/mozilla-inbound/rev/b12a741ef025
Allow access to TexturePoolOGL from Java r=jchen
https://hg.mozilla.org/integration/mozilla-inbound/rev/4135178bae2b
Make video decoding work with new SurfaceTexture API r=jolin
https://hg.mozilla.org/integration/mozilla-inbound/rev/b79cbaa5cf1a
Don't use inout param for Surface in ICodec r=jolin
https://hg.mozilla.org/integration/mozilla-inbound/rev/0c01bf8a1bd9
Support a 'continuous' mode for SurfaceTexture r=jgilbert
https://hg.mozilla.org/integration/mozilla-inbound/rev/d6516a10c808
Adjust Android Flash support to API changes r=jchen
https://hg.mozilla.org/integration/mozilla-inbound/rev/9d3843274c67
Update JNI bindings r=jchen
https://hg.mozilla.org/integration/mozilla-inbound/rev/adf185af7963
Add jni::GetAPIVersion() to get Android API version r=jchen
https://hg.mozilla.org/integration/mozilla-inbound/rev/f94c4f5bf53a
Don't use AndroidBridge to get API version in media stack r=jolin
Pushed by jwillcox@mozilla.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/d047739306d9
back out f94c4f5bf53a for test failures r=me
Backed out for failing chrome's test_video_discovery.html and mda's test_Eviction_mp4.html, both on Android:

https://hg.mozilla.org/integration/mozilla-inbound/rev/215d55f7a37f2ae278e58822202d366e1913828c
https://hg.mozilla.org/integration/mozilla-inbound/rev/897d1373d09524ad16ea239e5d467f18a7a98acd
https://hg.mozilla.org/integration/mozilla-inbound/rev/837571f77f6f8567ee5c257ef3b8dc75085bda35
https://hg.mozilla.org/integration/mozilla-inbound/rev/0d58d6c747b3f8b5e28ba010c0b157175cfd02e8
https://hg.mozilla.org/integration/mozilla-inbound/rev/3a039782475fc03add8cad102c1664663b925f2e
https://hg.mozilla.org/integration/mozilla-inbound/rev/f0ecaccefc636e8be23c4033adb9e31111b32807
https://hg.mozilla.org/integration/mozilla-inbound/rev/d3e4300c8976e793f9ecbc44b2e2d9a603184148
https://hg.mozilla.org/integration/mozilla-inbound/rev/c74f6afe9f3c8b4fa9d5b26c4b506be0ca6c3331
https://hg.mozilla.org/integration/mozilla-inbound/rev/bba1444daf9a7f9682fb83e93967bb5e24178778
https://hg.mozilla.org/integration/mozilla-inbound/rev/ecff8148ec7a7c39fffbb8d39fb80845e9bbaf60
https://hg.mozilla.org/integration/mozilla-inbound/rev/3aca5a0bd0b471b0f99c930c1ed9fe65fea54646
https://hg.mozilla.org/integration/mozilla-inbound/rev/e3f581845c7e7312e34d25e80a133e13ee1bd94b
https://hg.mozilla.org/integration/mozilla-inbound/rev/bdf0752ee032028354a16a75fd07d2285877e861

Latest follow-up push with failures: https://treeherder.mozilla.org/#/jobs?repo=mozilla-inbound&revision=d047739306d954ac5fc7671ecab3140b105b603c&filter-resultStatus=testfailed&filter-resultStatus=busted&filter-resultStatus=exception&filter-resultStatus=retry&filter-resultStatus=usercancel&filter-resultStatus=runnable
Failure log c2: https://treeherder.mozilla.org/logviewer.html#?job_id=96947144&repo=mozilla-inbound

[task 2017-05-05T16:45:00.529336Z] 16:45:00     INFO -  170 INFO TEST-START | mobile/android/tests/browser/chrome/test_video_discovery.html
[task 2017-05-05T16:45:21.858298Z] 16:45:21     INFO -  INFO | automation.py | Application ran for: 0:13:02.189956
[task 2017-05-05T16:45:21.858554Z] 16:45:21     INFO -  INFO | zombiecheck | Reading PID log: /tmp/tmpE_91W5pidlog
[task 2017-05-05T16:45:21.976668Z] 16:45:21     INFO -  /data/anr/traces.txt not found
[task 2017-05-05T16:45:23.426944Z] 16:45:23     INFO -  mozcrash Downloading symbols from: https://queue.taskcluster.net/v1/task/UJRcFF0kThSELpOEWXqY2Q/artifacts/public/build/target.crashreporter-symbols.zip
[task 2017-05-05T16:45:27.373547Z] 16:45:27     INFO -  mozcrash Copy/paste: /home/worker/workspace/build/linux64-minidump_stackwalk /tmp/tmpGoedFf/4bd99da4-c4fd-f67c-c13a-b56efd6bc52f.dmp /tmp/tmpElOwHu
[task 2017-05-05T16:45:33.988267Z] 16:45:33     INFO -  mozcrash Saved minidump as /home/worker/workspace/build/blobber_upload_dir/4bd99da4-c4fd-f67c-c13a-b56efd6bc52f.dmp
[task 2017-05-05T16:45:33.988664Z] 16:45:33     INFO -  mozcrash Saved app info as /home/worker/workspace/build/blobber_upload_dir/4bd99da4-c4fd-f67c-c13a-b56efd6bc52f.extra
[task 2017-05-05T16:45:33.991854Z] 16:45:33  WARNING -  PROCESS-CRASH | mobile/android/tests/browser/chrome/test_video_discovery.html | application crashed [@ 0xb8f4eb17]
[task 2017-05-05T16:45:33.992207Z] 16:45:33     INFO -  Crash dump filename: /tmp/tmpGoedFf/4bd99da4-c4fd-f67c-c13a-b56efd6bc52f.dmp
[task 2017-05-05T16:45:33.992387Z] 16:45:33     INFO -  Operating system: Android
[task 2017-05-05T16:45:33.992652Z] 16:45:33     INFO -                    0.0.0 Linux 2.6.29 #1 PREEMPT Thu Nov 7 22:27:50 UTC 2013 i686
[task 2017-05-05T16:45:33.992841Z] 16:45:33     INFO -  CPU: x86
[task 2017-05-05T16:45:33.993070Z] 16:45:33     INFO -       GenuineIntel family 6 model 3 stepping 3
[task 2017-05-05T16:45:33.993311Z] 16:45:33     INFO -       1 CPU
[task 2017-05-05T16:45:33.995218Z] 16:45:33     INFO -  GPU: UNKNOWN
[task 2017-05-05T16:45:33.995294Z] 16:45:33     INFO -  Crash reason:  SIGSEGV
[task 2017-05-05T16:45:33.995655Z] 16:45:33     INFO -  Crash address: 0x1
[task 2017-05-05T16:45:33.995984Z] 16:45:33     INFO -  Process uptime: not available
[task 2017-05-05T16:45:33.996030Z] 16:45:33     INFO -  Thread 59 (crashed)
[task 2017-05-05T16:45:33.996366Z] 16:45:33     INFO -   0  0xb8f4eb17
[task 2017-05-05T16:45:33.997257Z] 16:45:33     INFO -      eip = 0xb8f4eb17   esp = 0x944b379c   ebp = 0xb8f43bb0   ebx = 0xad34cff4
[task 2017-05-05T16:45:33.997335Z] 16:45:33     INFO -      esi = 0x00000000   edi = 0x944b3868   eax = 0x00000000   ecx = 0x00000001
[task 2017-05-05T16:45:33.997396Z] 16:45:33     INFO -      edx = 0x00000000   efl = 0x00000246
[task 2017-05-05T16:45:33.997455Z] 16:45:33     INFO -      Found by: given as instruction pointer in context
[task 2017-05-05T16:45:33.997502Z] 16:45:33     INFO -   1  libstagefright.so + 0x79eec
[task 2017-05-05T16:45:33.997809Z] 16:45:33     INFO -      eip = 0xad21aeec   esp = 0x944b37a0   ebp = 0xb8f43bb0
[task 2017-05-05T16:45:33.998392Z] 16:45:33     INFO -      Found by: stack scanning
[task 2017-05-05T16:45:33.998460Z] 16:45:33     INFO -   2  libxul.so!nsACString::Assign [nsTSubstring.cpp:d047739306d9 : 374 + 0xa]
[task 2017-05-05T16:45:33.998779Z] 16:45:33     INFO -      eip = 0xa24d4ee7   esp = 0x944b37c0   ebp = 0x944b3808
[task 2017-05-05T16:45:33.999364Z] 16:45:33     INFO -      Found by: stack scanning
[task 2017-05-05T16:45:33.999416Z] 16:45:33     INFO -   3  libomxpluginkk.so + 0x7f34
[task 2017-05-05T16:45:33.999996Z] 16:45:33     INFO -      eip = 0x944fbf34   esp = 0x944b3810   ebp = 0xad21ad69   ebx = 0xa24d4de3
[task 2017-05-05T16:45:34.000055Z] 16:45:33     INFO -      esi = 0x00000010   edi = 0x00000027
[task 2017-05-05T16:45:34.000110Z] 16:45:33     INFO -      Found by: call frame info
[task 2017-05-05T16:45:34.000177Z] 16:45:33     INFO -   4  libomxpluginkk.so!OmxPlugin::OmxDecoder::Init [OmxPlugin.cpp:d047739306d9 : 446 + 0x14]
[task 2017-05-05T16:45:34.000478Z] 16:45:33     INFO -      eip = 0x944f8147   esp = 0x944b3820   ebp = 0x944b39b8
[task 2017-05-05T16:45:34.000536Z] 16:45:33     INFO -      Found by: stack scanning
[task 2017-05-05T16:45:34.000871Z] 16:45:33     INFO -   5  libomxpluginkk.so!OmxPlugin::CreateDecoder [OmxPlugin.cpp:d047739306d9 : 1079 + 0x8]
[task 2017-05-05T16:45:34.000947Z] 16:45:33     INFO -      eip = 0x944f8e2a   esp = 0x944b39c0   ebp = 0x944b39f8   ebx = 0x944fbf34
[task 2017-05-05T16:45:34.001006Z] 16:45:33     INFO -      esi = 0x9874d100   edi = 0x989d04a0
[task 2017-05-05T16:45:34.001051Z] 16:45:33     INFO -      Found by: call frame info
[task 2017-05-05T16:45:34.001651Z] 16:45:33     INFO -   6  libxul.so!mozilla::AndroidMediaPluginHost::CreateDecoder [AndroidMediaPluginHost.cpp:d047739306d9 : 278 + 0x14]
[task 2017-05-05T16:45:34.001722Z] 16:45:33     INFO -      eip = 0xa3529838   esp = 0x944b3a00   ebp = 0x944b3a58   ebx = 0xa5f14ee8
[task 2017-05-05T16:45:34.001773Z] 16:45:33     INFO -      esi = 0x9874d100   edi = 0x00000000
[task 2017-05-05T16:45:34.001826Z] 16:45:33     INFO -      Found by: call frame info
[task 2017-05-05T16:45:34.001897Z] 16:45:33     INFO -   7  libxul.so!mozilla::AndroidMediaReader::ReadMetadata [AndroidMediaReader.cpp:d047739306d9 : 46 + 0xd]
[task 2017-05-05T16:45:34.002195Z] 16:45:33     INFO -      eip = 0xa3529905   esp = 0x944b3a60   ebp = 0x944b3ae8   ebx = 0xa5f14ee8
[task 2017-05-05T16:45:34.002254Z] 16:45:33     INFO -      esi = 0x9896dc00   edi = 0x9896dc00
[task 2017-05-05T16:45:34.002306Z] 16:45:33     INFO -      Found by: call frame info
[task 2017-05-05T16:45:34.002391Z] 16:45:33     INFO -   8  libxul.so!mozilla::MediaDecoderReader::AsyncReadMetadata [MediaDecoderReader.cpp:d047739306d9 : 221 + 0x4]
[task 2017-05-05T16:45:34.003006Z] 16:45:33     INFO -      eip = 0xa33dffc7   esp = 0x944b3af0   ebp = 0x944b3b38   ebx = 0xa5f14ee8
[task 2017-05-05T16:45:34.003063Z] 16:45:33     INFO -      esi = 0x9896dc00   edi = 0x944b3b18
[task 2017-05-05T16:45:34.003110Z] 16:45:33     INFO -      Found by: call frame info
[task 2017-05-05T16:45:34.003526Z] 16:45:34     INFO -   9  libxul.so!mozilla::detail::ProxyRunnable<mozilla::MozPromise<RefPtr<mozilla::MetadataHolder>, mozilla::MediaResult, true>, RefPtr<mozilla::MozPromise<RefPtr<mozilla::MetadataHolder>, mozilla::MediaResult, true> > (mozilla::MediaDecoderReader::*)(), mozilla::MediaDecoderReader>::Run [nsThreadUtils.h:d047739306d9 : 874 + 0xc]
[task 2017-05-05T16:45:34.003869Z] 16:45:34     INFO -      eip = 0xa33e94de   esp = 0x944b3b40   ebp = 0x944b3b78   ebx = 0xa5f14ee8
[task 2017-05-05T16:45:34.004425Z] 16:45:34     INFO -      esi = 0x988599c0   edi = 0x944b3b58
[task 2017-05-05T16:45:34.004486Z] 16:45:34     INFO -      Found by: call frame info
[task 2017-05-05T16:45:34.005096Z] 16:45:34     INFO -  10  libxul.so!mozilla::AutoTaskDispatcher::TaskGroupRunnable::Run [TaskDispatcher.h:d047739306d9 : 205 + 0x6]
[task 2017-05-05T16:45:34.005445Z] 16:45:34     INFO -      eip = 0xa2523144   esp = 0x944b3b80   ebp = 0x944b3b98   ebx = 0xa5f14ee8
[task 2017-05-05T16:45:34.005508Z] 16:45:34     INFO -      esi = 0x00000001   edi = 0x98710720
[task 2017-05-05T16:45:34.005561Z] 16:45:34     INFO -      Found by: call frame info
[task 2017-05-05T16:45:34.005625Z] 16:45:34     INFO -  11  libxul.so!mozilla::TaskQueue::Runner::Run [TaskQueue.cpp:d047739306d9 : 240 + 0x6]
[task 2017-05-05T16:45:34.006218Z] 16:45:34     INFO -      eip = 0xa2527519   esp = 0x944b3ba0   ebp = 0x944b3c18   ebx = 0xa5f14ee8
[task 2017-05-05T16:45:34.006284Z] 16:45:34     INFO -      esi = 0x9874e6e0   edi = 0x944b3bd0
[task 2017-05-05T16:45:34.007094Z] 16:45:34     INFO -      Found by: call frame info
[task 2017-05-05T16:45:34.007166Z] 16:45:34     INFO -  12  libxul.so!nsThreadPool::Run [nsThreadPool.cpp:d047739306d9 : 225 + 0x4]
[task 2017-05-05T16:45:34.007254Z] 16:45:34     INFO -      eip = 0xa252b824   esp = 0x944b3c20   ebp = 0x944b3c88   ebx = 0xa5f14ee8
[task 2017-05-05T16:45:34.007563Z] 16:45:34     INFO -      esi = 0x98988e20   edi = 0x00000000
[task 2017-05-05T16:45:34.007623Z] 16:45:34     INFO -      Found by: call frame info
[task 2017-05-05T16:45:34.007692Z] 16:45:34     INFO -  13  libxul.so!nsThread::ProcessNextEvent [nsThread.cpp:d047739306d9 : 1270 + 0x4]
[task 2017-05-05T16:45:34.008025Z] 16:45:34     INFO -      eip = 0xa252d73c   esp = 0x944b3c90   ebp = 0x944b3d28   ebx = 0xa5f14ee8
[task 2017-05-05T16:45:34.008349Z] 16:45:34     INFO -      esi = 0x997116a0   edi = 0xa5f163ac
[task 2017-05-05T16:45:34.008400Z] 16:45:34     INFO -      Found by: call frame info
[task 2017-05-05T16:45:34.008473Z] 16:45:34     INFO -  14  libxul.so!NS_ProcessNextEvent [nsThreadUtils.cpp:d047739306d9 : 393 + 0x11]
[task 2017-05-05T16:45:34.008778Z] 16:45:34     INFO -      eip = 0xa252e388   esp = 0x944b3d30   ebp = 0x944b3d58   ebx = 0xa5f14ee8
[task 2017-05-05T16:45:34.008842Z] 16:45:34     INFO -      esi = 0x00000001   edi = 0x9837a0e0
[task 2017-05-05T16:45:34.008897Z] 16:45:34     INFO -      Found by: call frame info
[task 2017-05-05T16:45:34.009245Z] 16:45:34     INFO -  15  libxul.so!mozilla::ipc::MessagePumpForNonMainThreads::Run [MessagePump.cpp:d047739306d9 : 368 + 0xc]
[task 2017-05-05T16:45:34.009327Z] 16:45:34     INFO -      eip = 0xa274ec3c   esp = 0x944b3d60   ebp = 0x944b3da8   ebx = 0xa5f14ee8
[task 2017-05-05T16:45:34.009383Z] 16:45:34     INFO -      esi = 0x9874da60   edi = 0x9837a0e0
[task 2017-05-05T16:45:34.009429Z] 16:45:34     INFO -      Found by: call frame info
[task 2017-05-05T16:45:34.010024Z] 16:45:34     INFO -  16  libxul.so!MessageLoop::RunInternal [message_loop.cc:d047739306d9 : 238 + 0x4]
[task 2017-05-05T16:45:34.010372Z] 16:45:34     INFO -      eip = 0xa2731155   esp = 0x944b3db0   ebp = 0x944b3dc8   ebx = 0xa5f14ee8
[task 2017-05-05T16:45:34.010427Z] 16:45:34     INFO -      esi = 0x9837a0e0   edi = 0x9837a0e0
[task 2017-05-05T16:45:34.010473Z] 16:45:34     INFO -      Found by: call frame info
[task 2017-05-05T16:45:34.010536Z] 16:45:34     INFO -  17  libxul.so!MessageLoop::Run [message_loop.cc:d047739306d9 : 231 + 0x7]
[task 2017-05-05T16:45:34.010866Z] 16:45:34     INFO -      eip = 0xa27312f4   esp = 0x944b3dd0   ebp = 0x944b3df8   ebx = 0xa5f14ee8
[task 2017-05-05T16:45:34.010932Z] 16:45:34     INFO -      esi = 0x9837a0e0   edi = 0x9837a0e0
[task 2017-05-05T16:45:34.010979Z] 16:45:34     INFO -      Found by: call frame info
[task 2017-05-05T16:45:34.011572Z] 16:45:34     INFO -  18  libxul.so!nsThread::ThreadFunc [nsThread.cpp:d047739306d9 : 501 + 0x8]
[task 2017-05-05T16:45:34.011655Z] 16:45:34     INFO -      eip = 0xa252e4b6   esp = 0x944b3e00   ebp = 0x944b3e48   ebx = 0xa5f14ee8
[task 2017-05-05T16:45:34.012220Z] 16:45:34     INFO -      esi = 0x997116a0   edi = 0x9837a0e0
[task 2017-05-05T16:45:34.012274Z] 16:45:34     INFO -      Found by: call frame info
[task 2017-05-05T16:45:34.012334Z] 16:45:34     INFO -  19  libnss3.so!_pt_root [ptthread.c:d047739306d9 : 216 + 0x7]
[task 2017-05-05T16:45:34.012675Z] 16:45:34     INFO -      eip = 0xa90081db   esp = 0x944b3e50   ebp = 0x944b3e98   ebx = 0xa90f6d10
[task 2017-05-05T16:45:34.013187Z] 16:45:34     INFO -      esi = 0x9979e880   edi = 0xa9204330
[task 2017-05-05T16:45:34.013229Z] 16:45:34     INFO -      Found by: call frame info
[task 2017-05-05T16:45:34.013262Z] 16:45:34     INFO -  20  libc.so + 0xf274
[task 2017-05-05T16:45:34.013315Z] 16:45:34     INFO -      eip = 0xb7ecb274   esp = 0x944b3ea0   ebp = 0x00000000   ebx = 0xb7f54ff4
[task 2017-05-05T16:45:34.013355Z] 16:45:34     INFO -      esi = 0x944b3f00   edi = 0xb8f4ce10
[task 2017-05-05T16:45:34.013390Z] 16:45:34     INFO -      Found by: call frame info
[task 2017-05-05T16:45:34.013444Z] 16:45:34     INFO -  21  libnss3.so!_PR_CreateThread [ptthread.c:d047739306d9 : 541 + 0xa]
[task 2017-05-05T16:45:34.013492Z] 16:45:34     INFO -      eip = 0xa90080bd   esp = 0x944b3ec4   ebp = 0x00000000
[task 2017-05-05T16:45:34.013527Z] 16:45:34     INFO -      Found by: stack scanning
[task 2017-05-05T16:45:34.013558Z] 16:45:34     INFO -  22  libc.so + 0xf179
[task 2017-05-05T16:45:34.013604Z] 16:45:34     INFO -      eip = 0xb7ecb179   esp = 0x944b3edc   ebp = 0x00000000
[task 2017-05-05T16:45:34.013639Z] 16:45:34     INFO -      Found by: stack scanning
[task 2017-05-05T16:45:34.013671Z] 16:45:34     INFO -  23  libc.so + 0x26975
[task 2017-05-05T16:45:34.013717Z] 16:45:34     INFO -      eip = 0xb7ee2975   esp = 0x944b3ef0   ebp = 0x00000000
[task 2017-05-05T16:45:34.013752Z] 16:45:34     INFO -      Found by: stack scanning
[task 2017-05-05T16:45:34.013802Z] 16:45:34     INFO -  24  libnss3.so!_PR_CreateThread [ptthread.c:d047739306d9 : 541 + 0xa]
[task 2017-05-05T16:45:34.013848Z] 16:45:34     INFO -      eip = 0xa90080bd   esp = 0x944b3ef4   ebp = 0x00000000
[task 2017-05-05T16:45:34.013883Z] 16:45:34     INFO -      Found by: stack scanning

Failure mda: https://treeherder.mozilla.org/logviewer.html#?job_id=96948313&repo=mozilla-inbound
[task 2017-05-05T16:40:00.972084Z] 16:40:00     INFO -  13 INFO TEST-START | dom/media/mediasource/test/test_Eviction_mp4.html
[task 2017-05-05T16:44:59.371557Z] 16:44:59     INFO -  Buffered messages logged at 16:40:00
[task 2017-05-05T16:44:59.372526Z] 16:44:59     INFO -  14 INFO TEST-PASS | dom/media/mediasource/test/test_Eviction_mp4.html | Receive a sourceopen event
[task 2017-05-05T16:44:59.372644Z] 16:44:59     INFO -  Buffered messages finished
[task 2017-05-05T16:44:59.372871Z] 16:44:59     INFO -  15 INFO TEST-UNEXPECTED-FAIL | dom/media/mediasource/test/test_Eviction_mp4.html | Test timed out.
[task 2017-05-05T16:44:59.372960Z] 16:44:59     INFO -      reportError@SimpleTest/TestRunner.js:121:7
[task 2017-05-05T16:44:59.373152Z] 16:44:59     INFO -      TestRunner._checkForHangs@SimpleTest/TestRunner.js:142:7
Flags: needinfo?(snorp)
Pushed by jwillcox@mozilla.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/96fe52231b57
Add GeckoSurfaceTexture, GeckoSurface and associated Android Service r=jchen
https://hg.mozilla.org/integration/mozilla-inbound/rev/e56e5e1c8786
Use SurfaceTexture for WebGL on Android in E10S r=jgilbert
https://hg.mozilla.org/integration/mozilla-inbound/rev/4519296a323e
Disable blitting from a SurfaceTexture r=jgilbert
https://hg.mozilla.org/integration/mozilla-inbound/rev/2f19977cd6ab
Allow access to TexturePoolOGL from Java r=jchen
https://hg.mozilla.org/integration/mozilla-inbound/rev/2c2c1e33eccc
Make video decoding work with new SurfaceTexture API r=jolin
https://hg.mozilla.org/integration/mozilla-inbound/rev/3522917d8f10
Don't use inout param for Surface in ICodec r=jolin
https://hg.mozilla.org/integration/mozilla-inbound/rev/bd53533c108e
Support a 'continuous' mode for SurfaceTexture r=jgilbert
https://hg.mozilla.org/integration/mozilla-inbound/rev/3cb108f7492f
Adjust Android Flash support to API changes r=jchen
https://hg.mozilla.org/integration/mozilla-inbound/rev/4cf8f4d5064c
Update JNI bindings r=jchen
https://hg.mozilla.org/integration/mozilla-inbound/rev/4d486c7469eb
Add jni::GetAPIVersion() to get Android API version r=jchen
https://hg.mozilla.org/integration/mozilla-inbound/rev/31bd912fba54
Don't use AndroidBridge to get API version in media stack r=jolin
Backout by ihsiao@mozilla.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/a5e2d088c2ed
Backed out 11 changesets for media test failures on android. a=backout
Pushed by jwillcox@mozilla.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/f65355fbb871
Add GeckoSurfaceTexture, GeckoSurface and associated Android Service r=jchen
https://hg.mozilla.org/integration/mozilla-inbound/rev/c33d0ad89ea0
Use SurfaceTexture for WebGL on Android in E10S r=jgilbert
https://hg.mozilla.org/integration/mozilla-inbound/rev/1ca529ddcc14
Disable blitting from a SurfaceTexture r=jgilbert
https://hg.mozilla.org/integration/mozilla-inbound/rev/079d0ff41f04
Allow access to TexturePoolOGL from Java r=jchen
https://hg.mozilla.org/integration/mozilla-inbound/rev/2dd4da02b18e
Make video decoding work with new SurfaceTexture API r=jolin
https://hg.mozilla.org/integration/mozilla-inbound/rev/c77cd1905676
Support a 'continuous' mode for SurfaceTexture r=jgilbert
https://hg.mozilla.org/integration/mozilla-inbound/rev/92f482c9e659
Adjust Android Flash support to API changes r=jchen
https://hg.mozilla.org/integration/mozilla-inbound/rev/7a0755319fd2
Update JNI bindings r=jchen
https://hg.mozilla.org/integration/mozilla-inbound/rev/1cbaa36e8e93
Add jni::GetAPIVersion() to get Android API version r=jchen
https://hg.mozilla.org/integration/mozilla-inbound/rev/3e8a6417ebd4
Don't use AndroidBridge to get API version in media stack r=jolin
Depends on: 1373916
Depends on: 1408241
See Also: → 1537964
Product: Core → Core Graveyard
You need to log in before you can comment on or make changes to this bug.