Closed Bug 1322650 Opened 8 years ago Closed 8 years ago

[geckoview] [e10s] Make WebGL work

Categories

(Core Graveyard :: Embedding: APIs, defect)

defect
Not set
normal

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)

(deleted), text/x-review-board-request
jchen
: review+
Details
(deleted), text/x-review-board-request
jgilbert
: review+
Details
(deleted), text/x-review-board-request
jgilbert
: review+
Details
(deleted), text/x-review-board-request
jchen
: review+
Details
(deleted), text/x-review-board-request
jhlin
: review+
Details
(deleted), text/x-review-board-request
jhlin
: review+
Details
(deleted), text/x-review-board-request
jgilbert
: review+
Details
(deleted), text/x-review-board-request
jchen
: review+
Details
(deleted), text/x-review-board-request
jchen
: review+
Details
(deleted), text/x-review-board-request
jchen
: review+
Details
(deleted), text/x-review-board-request
jchen
: review+
Details
(deleted), 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+
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)
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-
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+
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+
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)
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
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
Product: Core → Core Graveyard
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: