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

Commit 224fa294 authored by Craig Donner's avatar Craig Donner Committed by Android (Google) Code Review
Browse files

Merge "Add methods for allocating and locking GraphicBuffers via gralloc1 flags"

parents e8b5536c e96a325a
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -35,8 +35,8 @@ public:
    virtual ~GraphicBufferAlloc();
    virtual ~GraphicBufferAlloc();
    virtual sp<GraphicBuffer> createGraphicBuffer(uint32_t width,
    virtual sp<GraphicBuffer> createGraphicBuffer(uint32_t width,
            uint32_t height, PixelFormat format, uint32_t layerCount,
            uint32_t height, PixelFormat format, uint32_t layerCount,
            uint32_t usage, std::string requestorName,
            uint64_t producerUsage, uint64_t consumerUsage,
            status_t* error) override;
            std::string requestorName, status_t* error) override;
};
};




+19 −4
Original line number Original line Diff line number Diff line
@@ -38,14 +38,29 @@ public:
    /* Create a new GraphicBuffer for the client to use.
    /* Create a new GraphicBuffer for the client to use.
     */
     */
    virtual sp<GraphicBuffer> createGraphicBuffer(uint32_t w, uint32_t h,
    virtual sp<GraphicBuffer> createGraphicBuffer(uint32_t w, uint32_t h,
            PixelFormat format, uint32_t layerCount, uint32_t usage,
            PixelFormat format, uint32_t layerCount, uint64_t producerUsage,
            std::string requestorName, status_t* error) = 0;
            uint64_t consumerUsage, std::string requestorName,
            status_t* error) = 0;


    sp<GraphicBuffer> createGraphicBuffer(uint32_t w, uint32_t h,
    sp<GraphicBuffer> createGraphicBuffer(uint32_t w, uint32_t h,
            PixelFormat format, uint32_t layerCount, uint32_t usage,
            PixelFormat format, uint32_t layerCount, uint32_t usage,
            status_t* error) {
            status_t* error) {
        return createGraphicBuffer(w, h, format, layerCount, usage, "<Unknown>",
        return createGraphicBuffer(w, h, format, layerCount, usage,
                error);
                usage, "<Unknown>", error);
    }

    sp<GraphicBuffer> createGraphicBuffer(uint32_t w, uint32_t h,
            PixelFormat format, uint32_t layerCount, uint32_t usage,
            std::string requestorName, status_t* error) {
        return createGraphicBuffer(w, h, format, layerCount, usage,
                usage, requestorName, error);
    }

    sp<GraphicBuffer> createGraphicBuffer(uint32_t w, uint32_t h,
            PixelFormat format, uint32_t layerCount, uint64_t producerUsage,
            uint64_t consumerUsage, status_t* error) {
        return createGraphicBuffer(w, h, format, layerCount, producerUsage,
                consumerUsage, "<Unknown>", error);
    }
    }
};
};


+9 −1
Original line number Original line Diff line number Diff line
@@ -81,6 +81,11 @@ public:
            uint32_t inLayerCount, uint32_t inUsage,
            uint32_t inLayerCount, uint32_t inUsage,
            std::string requestorName = "<Unknown>");
            std::string requestorName = "<Unknown>");


    // creates w * h buffer with a layer count using gralloc1
    GraphicBuffer(uint32_t inWidth, uint32_t inHeight, PixelFormat inFormat,
            uint32_t inLayerCount, uint64_t inProducerUsage,
            uint64_t inConsumerUsage, std::string requestorName = "<Unknown>");

    // create a buffer from an existing handle
    // create a buffer from an existing handle
    GraphicBuffer(uint32_t inWidth, uint32_t inHeight, PixelFormat inFormat,
    GraphicBuffer(uint32_t inWidth, uint32_t inHeight, PixelFormat inFormat,
            uint32_t inLayerCount, uint32_t inUsage, uint32_t inStride,
            uint32_t inLayerCount, uint32_t inUsage, uint32_t inStride,
@@ -122,6 +127,8 @@ public:
    status_t lockAsync(uint32_t inUsage, void** vaddr, int fenceFd);
    status_t lockAsync(uint32_t inUsage, void** vaddr, int fenceFd);
    status_t lockAsync(uint32_t inUsage, const Rect& rect, void** vaddr,
    status_t lockAsync(uint32_t inUsage, const Rect& rect, void** vaddr,
            int fenceFd);
            int fenceFd);
    status_t lockAsync(uint64_t inProducerUsage, uint64_t inConsumerUsage,
            const Rect& rect, void** vaddr, int fenceFd);
    status_t lockAsyncYCbCr(uint32_t inUsage, android_ycbcr *ycbcr,
    status_t lockAsyncYCbCr(uint32_t inUsage, android_ycbcr *ycbcr,
            int fenceFd);
            int fenceFd);
    status_t lockAsyncYCbCr(uint32_t inUsage, const Rect& rect,
    status_t lockAsyncYCbCr(uint32_t inUsage, const Rect& rect,
@@ -166,7 +173,8 @@ private:
    const GraphicBuffer& operator = (const GraphicBuffer& rhs) const;
    const GraphicBuffer& operator = (const GraphicBuffer& rhs) const;


    status_t initSize(uint32_t inWidth, uint32_t inHeight, PixelFormat inFormat,
    status_t initSize(uint32_t inWidth, uint32_t inHeight, PixelFormat inFormat,
            uint32_t inLayerCount, uint32_t inUsage, std::string requestorName);
            uint32_t inLayerCount, uint64_t inProducerUsage,
            uint64_t inConsumerUsage, std::string requestorName);


    void free_handle();
    void free_handle();


+4 −3
Original line number Original line Diff line number Diff line
@@ -65,8 +65,8 @@ public:
    static inline GraphicBufferAllocator& get() { return getInstance(); }
    static inline GraphicBufferAllocator& get() { return getInstance(); }


    status_t allocate(uint32_t w, uint32_t h, PixelFormat format,
    status_t allocate(uint32_t w, uint32_t h, PixelFormat format,
            uint32_t layerCount, uint32_t usage, buffer_handle_t* handle,
            uint32_t layerCount, uint64_t producerUsage, uint64_t consumerUsage,
            uint32_t* stride, uint64_t graphicBufferId,
            buffer_handle_t* handle, uint32_t* stride, uint64_t graphicBufferId,
            std::string requestorName);
            std::string requestorName);


    status_t free(buffer_handle_t handle);
    status_t free(buffer_handle_t handle);
@@ -81,7 +81,8 @@ private:
        uint32_t stride;
        uint32_t stride;
        PixelFormat format;
        PixelFormat format;
        uint32_t layerCount;
        uint32_t layerCount;
        uint32_t usage;
        uint64_t producerUsage;
        uint64_t consumerUsage;
        size_t size;
        size_t size;
        std::string requestorName;
        std::string requestorName;
    };
    };
+4 −0
Original line number Original line Diff line number Diff line
@@ -55,6 +55,10 @@ public:
    status_t lockAsync(buffer_handle_t handle,
    status_t lockAsync(buffer_handle_t handle,
            uint32_t usage, const Rect& bounds, void** vaddr, int fenceFd);
            uint32_t usage, const Rect& bounds, void** vaddr, int fenceFd);


    status_t lockAsync(buffer_handle_t handle,
            uint64_t producerUsage, uint64_t consumerUsage, const Rect& bounds,
            void** vaddr, int fenceFd);

    status_t lockAsyncYCbCr(buffer_handle_t handle,
    status_t lockAsyncYCbCr(buffer_handle_t handle,
            uint32_t usage, const Rect& bounds, android_ycbcr *ycbcr,
            uint32_t usage, const Rect& bounds, android_ycbcr *ycbcr,
            int fenceFd);
            int fenceFd);
Loading