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

Commit 8518ebbc authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "renderfright: add realtime arg" into sc-dev

parents 868aeb82 bcca9930
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -404,7 +404,7 @@ GLESRenderEngine::GLESRenderEngine(const RenderEngineCreationArgs& args, EGLDisp
    }

    mImageManager = std::make_unique<ImageManager>(this);
    mImageManager->initThread();
    mImageManager->initThread(args.realtime);
    mDrawingBuffer = createFramebuffer();
    sp<GraphicBuffer> buf =
            new GraphicBuffer(1, 1, PIXEL_FORMAT_RGBA_8888, 1,
+8 −6
Original line number Diff line number Diff line
@@ -32,9 +32,10 @@ namespace gl {

ImageManager::ImageManager(GLESRenderEngine* engine) : mEngine(engine) {}

void ImageManager::initThread() {
void ImageManager::initThread(bool realtime) {
    mThread = std::thread([this]() { threadMain(); });
    pthread_setname_np(mThread.native_handle(), "ImageManager");
    if (realtime) {
        // Use SCHED_FIFO to minimize jitter
        struct sched_param param = {0};
        param.sched_priority = 2;
@@ -42,6 +43,7 @@ void ImageManager::initThread() {
            ALOGE("Couldn't set SCHED_FIFO for ImageManager");
        }
    }
}

ImageManager::~ImageManager() {
    {
+1 −1
Original line number Diff line number Diff line
@@ -42,7 +42,7 @@ public:
    // Starts the background thread for the ImageManager
    // We need this to guarantee that the class is fully-constructed before the
    // thread begins running.
    void initThread();
    void initThread(bool realtime);
    void cacheAsync(const sp<GraphicBuffer>& buffer, const std::shared_ptr<Barrier>& barrier)
            EXCLUDES(mMutex);
    status_t cache(const sp<GraphicBuffer>& buffer);
+12 −3
Original line number Diff line number Diff line
@@ -206,6 +206,7 @@ struct RenderEngineCreationArgs {
    bool supportsBackgroundBlur;
    RenderEngine::ContextPriority contextPriority;
    RenderEngine::RenderEngineType renderEngineType;
    bool realtime;

    struct Builder;

@@ -215,7 +216,8 @@ private:
                             bool _enableProtectedContext, bool _precacheToneMapperShaderOnly,
                             bool _supportsBackgroundBlur,
                             RenderEngine::ContextPriority _contextPriority,
                             RenderEngine::RenderEngineType _renderEngineType)
                             RenderEngine::RenderEngineType _renderEngineType,
                             bool _realtime)
          : pixelFormat(_pixelFormat),
            imageCacheSize(_imageCacheSize),
            useColorManagement(_useColorManagement),
@@ -223,7 +225,8 @@ private:
            precacheToneMapperShaderOnly(_precacheToneMapperShaderOnly),
            supportsBackgroundBlur(_supportsBackgroundBlur),
            contextPriority(_contextPriority),
            renderEngineType(_renderEngineType) {}
            renderEngineType(_renderEngineType),
            realtime(_realtime) {}
    RenderEngineCreationArgs() = delete;
};

@@ -262,10 +265,15 @@ struct RenderEngineCreationArgs::Builder {
        this->renderEngineType = renderEngineType;
        return *this;
    }
    Builder& setRealtime(bool realtime) {
        this->realtime = realtime;
        return *this;
    }
    RenderEngineCreationArgs build() const {
        return RenderEngineCreationArgs(pixelFormat, imageCacheSize, useColorManagement,
                                        enableProtectedContext, precacheToneMapperShaderOnly,
                                        supportsBackgroundBlur, contextPriority, renderEngineType);
                                        supportsBackgroundBlur, contextPriority, renderEngineType,
                                        realtime);
    }

private:
@@ -278,6 +286,7 @@ private:
    bool supportsBackgroundBlur = false;
    RenderEngine::ContextPriority contextPriority = RenderEngine::ContextPriority::MEDIUM;
    RenderEngine::RenderEngineType renderEngineType = RenderEngine::RenderEngineType::GLES;
    bool realtime = true;
};

class BindNativeBufferAsFramebuffer {