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

Commit b94adfd9 authored by Valerie Hau's avatar Valerie Hau
Browse files

Adding 3.0 mapper support to lockAsync

Bug: 123423521
Test: build, boot, GraphicBuffer_test
Change-Id: Id7c0a2f5d7b942e612ff7e8a5e047511f80f81bc
parent a2414f06
Loading
Loading
Loading
Loading
+12 −12
Original line number Diff line number Diff line
@@ -286,22 +286,22 @@ status_t GraphicBuffer::unlock()
    return res;
}

status_t GraphicBuffer::lockAsync(uint32_t inUsage, void** vaddr, int fenceFd)
{
status_t GraphicBuffer::lockAsync(uint32_t inUsage, void** vaddr, int fenceFd,
                                  int32_t* outBytesPerPixel, int32_t* outBytesPerStride) {
    const Rect lockBounds(width, height);
    status_t res = lockAsync(inUsage, lockBounds, vaddr, fenceFd);
    status_t res =
            lockAsync(inUsage, lockBounds, vaddr, fenceFd, outBytesPerPixel, outBytesPerStride);
    return res;
}

status_t GraphicBuffer::lockAsync(uint32_t inUsage, const Rect& rect,
        void** vaddr, int fenceFd)
{
    return lockAsync(inUsage, inUsage, rect, vaddr, fenceFd);
status_t GraphicBuffer::lockAsync(uint32_t inUsage, const Rect& rect, void** vaddr, int fenceFd,
                                  int32_t* outBytesPerPixel, int32_t* outBytesPerStride) {
    return lockAsync(inUsage, inUsage, rect, vaddr, fenceFd, outBytesPerPixel, outBytesPerStride);
}

status_t GraphicBuffer::lockAsync(uint64_t inProducerUsage,
        uint64_t inConsumerUsage, const Rect& rect, void** vaddr, int fenceFd)
{
status_t GraphicBuffer::lockAsync(uint64_t inProducerUsage, uint64_t inConsumerUsage,
                                  const Rect& rect, void** vaddr, int fenceFd,
                                  int32_t* outBytesPerPixel, int32_t* outBytesPerStride) {
    if (rect.left < 0 || rect.right  > width ||
        rect.top  < 0 || rect.bottom > height) {
        ALOGE("locking pixels (%d,%d,%d,%d) outside of buffer (w=%d, h=%d)",
@@ -310,9 +310,9 @@ status_t GraphicBuffer::lockAsync(uint64_t inProducerUsage,
        return BAD_VALUE;
    }

    int32_t bytesPerPixel, bytesPerStride;
    status_t res = getBufferMapper().lockAsync(handle, inProducerUsage, inConsumerUsage, rect,
                                               vaddr, fenceFd, &bytesPerPixel, &bytesPerStride);
                                               vaddr, fenceFd, outBytesPerPixel, outBytesPerStride);

    return res;
}

+9 −5
Original line number Diff line number Diff line
@@ -180,11 +180,15 @@ public:
    status_t lockYCbCr(uint32_t inUsage, const Rect& rect,
            android_ycbcr *ycbcr);
    status_t unlock();
    status_t lockAsync(uint32_t inUsage, void** vaddr, int fenceFd);
    status_t lockAsync(uint32_t inUsage, const Rect& rect, void** vaddr,
            int fenceFd);
    status_t lockAsync(uint64_t inProducerUsage, uint64_t inConsumerUsage,
            const Rect& rect, void** vaddr, int fenceFd);
    // For the following three lockAsync functions, if bytesPerStride or bytesPerPixel
    // are unknown or variable, -1 will be returned
    status_t lockAsync(uint32_t inUsage, void** vaddr, int fenceFd,
                       int32_t* outBytesPerPixel = nullptr, int32_t* outBytesPerStride = nullptr);
    status_t lockAsync(uint32_t inUsage, const Rect& rect, void** vaddr, int fenceFd,
                       int32_t* outBytesPerPixel = nullptr, int32_t* outBytesPerStride = nullptr);
    status_t lockAsync(uint64_t inProducerUsage, uint64_t inConsumerUsage, const Rect& rect,
                       void** vaddr, int fenceFd, int32_t* outBytesPerPixel = nullptr,
                       int32_t* outBytesPerStride = nullptr);
    status_t lockAsyncYCbCr(uint32_t inUsage, android_ycbcr *ycbcr,
            int fenceFd);
    status_t lockAsyncYCbCr(uint32_t inUsage, const Rect& rect,