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

Commit 2d02d91f authored by Chia-I Wu's avatar Chia-I Wu
Browse files

graphics: fix gralloc1 usage flags in default impl

BufferUsage::SENSOR_DIRECT_DATA should be filtered out for consumer
usage.  BufferUsage::GPU_DATA_BUFFER should be filtered out for
producer usage and be translated to
GRALLOC1_CONSUMER_USAGE_GPU_DATA_BUFFER for consumer usage.

Bug: 62491483
Test: boots
Change-Id: I171712adf45ae80dadeed7997fb9872ff176fa1a
parent 7a5dad06
Loading
Loading
Loading
Loading
+12 −4
Original line number Diff line number Diff line
@@ -200,8 +200,8 @@ uint64_t Gralloc1Allocator::toProducerUsage(uint64_t usage) {
    // should be filtered out
    uint64_t producerUsage =
        usage &
        ~static_cast<uint64_t>(BufferUsage::CPU_READ_MASK |
                               BufferUsage::CPU_WRITE_MASK);
        ~static_cast<uint64_t>(BufferUsage::CPU_READ_MASK | BufferUsage::CPU_WRITE_MASK |
                               BufferUsage::GPU_DATA_BUFFER);

    switch (usage & BufferUsage::CPU_WRITE_MASK) {
        case static_cast<uint64_t>(BufferUsage::CPU_WRITE_RARELY):
@@ -225,6 +225,8 @@ uint64_t Gralloc1Allocator::toProducerUsage(uint64_t usage) {
            break;
    }

    // BufferUsage::GPU_DATA_BUFFER is always filtered out

    return producerUsage;
}

@@ -233,8 +235,8 @@ uint64_t Gralloc1Allocator::toConsumerUsage(uint64_t usage) {
    // should be filtered out
    uint64_t consumerUsage =
        usage &
        ~static_cast<uint64_t>(BufferUsage::CPU_READ_MASK |
                               BufferUsage::CPU_WRITE_MASK);
        ~static_cast<uint64_t>(BufferUsage::CPU_READ_MASK | BufferUsage::CPU_WRITE_MASK |
                               BufferUsage::SENSOR_DIRECT_DATA | BufferUsage::GPU_DATA_BUFFER);

    switch (usage & BufferUsage::CPU_READ_MASK) {
        case static_cast<uint64_t>(BufferUsage::CPU_READ_RARELY):
@@ -247,6 +249,12 @@ uint64_t Gralloc1Allocator::toConsumerUsage(uint64_t usage) {
            break;
    }

    // BufferUsage::SENSOR_DIRECT_DATA is always filtered out

    if (usage & BufferUsage::GPU_DATA_BUFFER) {
        consumerUsage |= GRALLOC1_CONSUMER_USAGE_GPU_DATA_BUFFER;
    }

    return consumerUsage;
}