Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e6cfb09c authored by Stan Iliev's avatar Stan Iliev Committed by Android (Google) Code Review
Browse files

Merge "Revert "TextureView Vulkan support and optimized OpenGL draw""

parents c72888de 867c43de
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -22,6 +22,8 @@
#include "SkColorFilter.h"
#include "SkColorFilter.h"
#include "SkColorMatrixFilter.h"
#include "SkColorMatrixFilter.h"


#include <Caches.h>

namespace android {
namespace android {


using namespace uirenderer;
using namespace uirenderer;
+1 −0
Original line number Original line Diff line number Diff line
@@ -20,6 +20,7 @@
#include "SkMatrix.h"
#include "SkMatrix.h"
#include "core_jni_helpers.h"
#include "core_jni_helpers.h"


#include <Caches.h>
#include <jni.h>
#include <jni.h>


namespace android {
namespace android {
+1 −0
Original line number Original line Diff line number Diff line
@@ -6,6 +6,7 @@
#include "SkBlendMode.h"
#include "SkBlendMode.h"
#include "core_jni_helpers.h"
#include "core_jni_helpers.h"


#include <Caches.h>
#include <jni.h>
#include <jni.h>


using namespace android::uirenderer;
using namespace android::uirenderer;
+23 −24
Original line number Original line Diff line number Diff line
@@ -36,7 +36,6 @@
#include "jni.h"
#include "jni.h"
#include <nativehelper/JNIHelp.h>
#include <nativehelper/JNIHelp.h>
#include <nativehelper/ScopedLocalRef.h>
#include <nativehelper/ScopedLocalRef.h>
#include "surfacetexture/SurfaceTexture.h"


// ----------------------------------------------------------------------------
// ----------------------------------------------------------------------------


@@ -81,10 +80,10 @@ static bool isProtectedContext() {
// ----------------------------------------------------------------------------
// ----------------------------------------------------------------------------


static void SurfaceTexture_setSurfaceTexture(JNIEnv* env, jobject thiz,
static void SurfaceTexture_setSurfaceTexture(JNIEnv* env, jobject thiz,
        const sp<SurfaceTexture>& surfaceTexture)
        const sp<GLConsumer>& surfaceTexture)
{
{
    SurfaceTexture* const p =
    GLConsumer* const p =
        (SurfaceTexture*)env->GetLongField(thiz, fields.surfaceTexture);
        (GLConsumer*)env->GetLongField(thiz, fields.surfaceTexture);
    if (surfaceTexture.get()) {
    if (surfaceTexture.get()) {
        surfaceTexture->incStrong((void*)SurfaceTexture_setSurfaceTexture);
        surfaceTexture->incStrong((void*)SurfaceTexture_setSurfaceTexture);
    }
    }
@@ -109,10 +108,10 @@ static void SurfaceTexture_setProducer(JNIEnv* env, jobject thiz,
}
}


static void SurfaceTexture_setFrameAvailableListener(JNIEnv* env,
static void SurfaceTexture_setFrameAvailableListener(JNIEnv* env,
        jobject thiz, sp<SurfaceTexture::FrameAvailableListener> listener)
        jobject thiz, sp<GLConsumer::FrameAvailableListener> listener)
{
{
    SurfaceTexture::FrameAvailableListener* const p =
    GLConsumer::FrameAvailableListener* const p =
        (SurfaceTexture::FrameAvailableListener*)
        (GLConsumer::FrameAvailableListener*)
            env->GetLongField(thiz, fields.frameAvailableListener);
            env->GetLongField(thiz, fields.frameAvailableListener);
    if (listener.get()) {
    if (listener.get()) {
        listener->incStrong((void*)SurfaceTexture_setSurfaceTexture);
        listener->incStrong((void*)SurfaceTexture_setSurfaceTexture);
@@ -123,8 +122,8 @@ static void SurfaceTexture_setFrameAvailableListener(JNIEnv* env,
    env->SetLongField(thiz, fields.frameAvailableListener, (jlong)listener.get());
    env->SetLongField(thiz, fields.frameAvailableListener, (jlong)listener.get());
}
}


sp<SurfaceTexture> SurfaceTexture_getSurfaceTexture(JNIEnv* env, jobject thiz) {
sp<GLConsumer> SurfaceTexture_getSurfaceTexture(JNIEnv* env, jobject thiz) {
    return (SurfaceTexture*)env->GetLongField(thiz, fields.surfaceTexture);
    return (GLConsumer*)env->GetLongField(thiz, fields.surfaceTexture);
}
}


sp<IGraphicBufferProducer> SurfaceTexture_getProducer(JNIEnv* env, jobject thiz) {
sp<IGraphicBufferProducer> SurfaceTexture_getProducer(JNIEnv* env, jobject thiz) {
@@ -132,7 +131,7 @@ sp<IGraphicBufferProducer> SurfaceTexture_getProducer(JNIEnv* env, jobject thiz)
}
}


sp<ANativeWindow> android_SurfaceTexture_getNativeWindow(JNIEnv* env, jobject thiz) {
sp<ANativeWindow> android_SurfaceTexture_getNativeWindow(JNIEnv* env, jobject thiz) {
    sp<SurfaceTexture> surfaceTexture(SurfaceTexture_getSurfaceTexture(env, thiz));
    sp<GLConsumer> surfaceTexture(SurfaceTexture_getSurfaceTexture(env, thiz));
    sp<IGraphicBufferProducer> producer(SurfaceTexture_getProducer(env, thiz));
    sp<IGraphicBufferProducer> producer(SurfaceTexture_getProducer(env, thiz));
    sp<Surface> surfaceTextureClient(surfaceTexture != NULL ? new Surface(producer) : NULL);
    sp<Surface> surfaceTextureClient(surfaceTexture != NULL ? new Surface(producer) : NULL);
    return surfaceTextureClient;
    return surfaceTextureClient;
@@ -145,7 +144,7 @@ bool android_SurfaceTexture_isInstanceOf(JNIEnv* env, jobject thiz) {


// ----------------------------------------------------------------------------
// ----------------------------------------------------------------------------


class JNISurfaceTextureContext : public SurfaceTexture::FrameAvailableListener
class JNISurfaceTextureContext : public GLConsumer::FrameAvailableListener
{
{
public:
public:
    JNISurfaceTextureContext(JNIEnv* env, jobject weakThiz, jclass clazz);
    JNISurfaceTextureContext(JNIEnv* env, jobject weakThiz, jclass clazz);
@@ -267,12 +266,12 @@ static void SurfaceTexture_init(JNIEnv* env, jobject thiz, jboolean isDetached,
        consumer->setMaxBufferCount(1);
        consumer->setMaxBufferCount(1);
    }
    }


    sp<SurfaceTexture> surfaceTexture;
    sp<GLConsumer> surfaceTexture;
    if (isDetached) {
    if (isDetached) {
        surfaceTexture = new SurfaceTexture(consumer, GL_TEXTURE_EXTERNAL_OES,
        surfaceTexture = new GLConsumer(consumer, GL_TEXTURE_EXTERNAL_OES,
                true, !singleBufferMode);
                true, !singleBufferMode);
    } else {
    } else {
        surfaceTexture = new SurfaceTexture(consumer, texName,
        surfaceTexture = new GLConsumer(consumer, texName,
                GL_TEXTURE_EXTERNAL_OES, true, !singleBufferMode);
                GL_TEXTURE_EXTERNAL_OES, true, !singleBufferMode);
    }
    }


@@ -307,7 +306,7 @@ static void SurfaceTexture_init(JNIEnv* env, jobject thiz, jboolean isDetached,


static void SurfaceTexture_finalize(JNIEnv* env, jobject thiz)
static void SurfaceTexture_finalize(JNIEnv* env, jobject thiz)
{
{
    sp<SurfaceTexture> surfaceTexture(SurfaceTexture_getSurfaceTexture(env, thiz));
    sp<GLConsumer> surfaceTexture(SurfaceTexture_getSurfaceTexture(env, thiz));
    surfaceTexture->setFrameAvailableListener(0);
    surfaceTexture->setFrameAvailableListener(0);
    SurfaceTexture_setFrameAvailableListener(env, thiz, 0);
    SurfaceTexture_setFrameAvailableListener(env, thiz, 0);
    SurfaceTexture_setSurfaceTexture(env, thiz, 0);
    SurfaceTexture_setSurfaceTexture(env, thiz, 0);
@@ -316,13 +315,13 @@ static void SurfaceTexture_finalize(JNIEnv* env, jobject thiz)


static void SurfaceTexture_setDefaultBufferSize(
static void SurfaceTexture_setDefaultBufferSize(
        JNIEnv* env, jobject thiz, jint width, jint height) {
        JNIEnv* env, jobject thiz, jint width, jint height) {
    sp<SurfaceTexture> surfaceTexture(SurfaceTexture_getSurfaceTexture(env, thiz));
    sp<GLConsumer> surfaceTexture(SurfaceTexture_getSurfaceTexture(env, thiz));
    surfaceTexture->setDefaultBufferSize(width, height);
    surfaceTexture->setDefaultBufferSize(width, height);
}
}


static void SurfaceTexture_updateTexImage(JNIEnv* env, jobject thiz)
static void SurfaceTexture_updateTexImage(JNIEnv* env, jobject thiz)
{
{
    sp<SurfaceTexture> surfaceTexture(SurfaceTexture_getSurfaceTexture(env, thiz));
    sp<GLConsumer> surfaceTexture(SurfaceTexture_getSurfaceTexture(env, thiz));
    status_t err = surfaceTexture->updateTexImage();
    status_t err = surfaceTexture->updateTexImage();
    if (err == INVALID_OPERATION) {
    if (err == INVALID_OPERATION) {
        jniThrowException(env, IllegalStateException, "Unable to update texture contents (see "
        jniThrowException(env, IllegalStateException, "Unable to update texture contents (see "
@@ -334,7 +333,7 @@ static void SurfaceTexture_updateTexImage(JNIEnv* env, jobject thiz)


static void SurfaceTexture_releaseTexImage(JNIEnv* env, jobject thiz)
static void SurfaceTexture_releaseTexImage(JNIEnv* env, jobject thiz)
{
{
    sp<SurfaceTexture> surfaceTexture(SurfaceTexture_getSurfaceTexture(env, thiz));
    sp<GLConsumer> surfaceTexture(SurfaceTexture_getSurfaceTexture(env, thiz));
    status_t err = surfaceTexture->releaseTexImage();
    status_t err = surfaceTexture->releaseTexImage();
    if (err == INVALID_OPERATION) {
    if (err == INVALID_OPERATION) {
        jniThrowException(env, IllegalStateException, "Unable to release texture contents (see "
        jniThrowException(env, IllegalStateException, "Unable to release texture contents (see "
@@ -346,20 +345,20 @@ static void SurfaceTexture_releaseTexImage(JNIEnv* env, jobject thiz)


static jint SurfaceTexture_detachFromGLContext(JNIEnv* env, jobject thiz)
static jint SurfaceTexture_detachFromGLContext(JNIEnv* env, jobject thiz)
{
{
    sp<SurfaceTexture> surfaceTexture(SurfaceTexture_getSurfaceTexture(env, thiz));
    sp<GLConsumer> surfaceTexture(SurfaceTexture_getSurfaceTexture(env, thiz));
    return surfaceTexture->detachFromContext();
    return surfaceTexture->detachFromContext();
}
}


static jint SurfaceTexture_attachToGLContext(JNIEnv* env, jobject thiz, jint tex)
static jint SurfaceTexture_attachToGLContext(JNIEnv* env, jobject thiz, jint tex)
{
{
    sp<SurfaceTexture> surfaceTexture(SurfaceTexture_getSurfaceTexture(env, thiz));
    sp<GLConsumer> surfaceTexture(SurfaceTexture_getSurfaceTexture(env, thiz));
    return surfaceTexture->attachToContext((GLuint)tex);
    return surfaceTexture->attachToContext((GLuint)tex);
}
}


static void SurfaceTexture_getTransformMatrix(JNIEnv* env, jobject thiz,
static void SurfaceTexture_getTransformMatrix(JNIEnv* env, jobject thiz,
        jfloatArray jmtx)
        jfloatArray jmtx)
{
{
    sp<SurfaceTexture> surfaceTexture(SurfaceTexture_getSurfaceTexture(env, thiz));
    sp<GLConsumer> surfaceTexture(SurfaceTexture_getSurfaceTexture(env, thiz));
    float* mtx = env->GetFloatArrayElements(jmtx, NULL);
    float* mtx = env->GetFloatArrayElements(jmtx, NULL);
    surfaceTexture->getTransformMatrix(mtx);
    surfaceTexture->getTransformMatrix(mtx);
    env->ReleaseFloatArrayElements(jmtx, mtx, 0);
    env->ReleaseFloatArrayElements(jmtx, mtx, 0);
@@ -367,19 +366,19 @@ static void SurfaceTexture_getTransformMatrix(JNIEnv* env, jobject thiz,


static jlong SurfaceTexture_getTimestamp(JNIEnv* env, jobject thiz)
static jlong SurfaceTexture_getTimestamp(JNIEnv* env, jobject thiz)
{
{
    sp<SurfaceTexture> surfaceTexture(SurfaceTexture_getSurfaceTexture(env, thiz));
    sp<GLConsumer> surfaceTexture(SurfaceTexture_getSurfaceTexture(env, thiz));
    return surfaceTexture->getTimestamp();
    return surfaceTexture->getTimestamp();
}
}


static void SurfaceTexture_release(JNIEnv* env, jobject thiz)
static void SurfaceTexture_release(JNIEnv* env, jobject thiz)
{
{
    sp<SurfaceTexture> surfaceTexture(SurfaceTexture_getSurfaceTexture(env, thiz));
    sp<GLConsumer> surfaceTexture(SurfaceTexture_getSurfaceTexture(env, thiz));
    surfaceTexture->abandon();
    surfaceTexture->abandon();
}
}


static jboolean SurfaceTexture_isReleased(JNIEnv* env, jobject thiz)
static jboolean SurfaceTexture_isReleased(JNIEnv* env, jobject thiz)
{
{
    sp<SurfaceTexture> surfaceTexture(SurfaceTexture_getSurfaceTexture(env, thiz));
    sp<GLConsumer> surfaceTexture(SurfaceTexture_getSurfaceTexture(env, thiz));
    return surfaceTexture->isAbandoned();
    return surfaceTexture->isAbandoned();
}
}


+2 −1
Original line number Original line Diff line number Diff line
@@ -67,7 +67,8 @@ static void TextureLayer_setTransform(JNIEnv* env, jobject clazz,
static void TextureLayer_setSurfaceTexture(JNIEnv* env, jobject clazz,
static void TextureLayer_setSurfaceTexture(JNIEnv* env, jobject clazz,
        jlong layerUpdaterPtr, jobject surface) {
        jlong layerUpdaterPtr, jobject surface) {
    DeferredLayerUpdater* layer = reinterpret_cast<DeferredLayerUpdater*>(layerUpdaterPtr);
    DeferredLayerUpdater* layer = reinterpret_cast<DeferredLayerUpdater*>(layerUpdaterPtr);
    layer->setSurfaceTexture(SurfaceTexture_getSurfaceTexture(env, surface));
    sp<GLConsumer> surfaceTexture(SurfaceTexture_getSurfaceTexture(env, surface));
    layer->setSurfaceTexture(surfaceTexture);
}
}


static void TextureLayer_updateSurfaceTexture(JNIEnv* env, jobject clazz,
static void TextureLayer_updateSurfaceTexture(JNIEnv* env, jobject clazz,
Loading