Loading libs/nativewindow/AHardwareBuffer.cpp +11 −2 Original line number Diff line number Diff line Loading @@ -263,8 +263,17 @@ int AHardwareBuffer_isSupported(const AHardwareBuffer_Desc* desc) { if (!desc) return 0; if (!AHardwareBuffer_isValidDescription(desc, /*log=*/false)) return 0; // Make a trial allocation. // TODO(b/115660272): add implementation that uses a HAL query. bool supported = false; GraphicBuffer* gBuffer = new GraphicBuffer(); status_t err = gBuffer->isSupported(desc->width, desc->height, desc->format, desc->layers, desc->usage, &supported); if (err == NO_ERROR) { return supported; } // function isSupported is not implemented on device or an error occurred during HAL // query. Make a trial allocation. AHardwareBuffer_Desc trialDesc = *desc; trialDesc.width = 4; trialDesc.height = desc->format == AHARDWAREBUFFER_FORMAT_BLOB ? 1 : 4; Loading libs/ui/GraphicBuffer.cpp +12 −12 Original line number Diff line number Diff line Loading @@ -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)", Loading @@ -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; } Loading libs/ui/include/ui/GraphicBuffer.h +9 −5 Original line number Diff line number Diff line Loading @@ -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, Loading Loading
libs/nativewindow/AHardwareBuffer.cpp +11 −2 Original line number Diff line number Diff line Loading @@ -263,8 +263,17 @@ int AHardwareBuffer_isSupported(const AHardwareBuffer_Desc* desc) { if (!desc) return 0; if (!AHardwareBuffer_isValidDescription(desc, /*log=*/false)) return 0; // Make a trial allocation. // TODO(b/115660272): add implementation that uses a HAL query. bool supported = false; GraphicBuffer* gBuffer = new GraphicBuffer(); status_t err = gBuffer->isSupported(desc->width, desc->height, desc->format, desc->layers, desc->usage, &supported); if (err == NO_ERROR) { return supported; } // function isSupported is not implemented on device or an error occurred during HAL // query. Make a trial allocation. AHardwareBuffer_Desc trialDesc = *desc; trialDesc.width = 4; trialDesc.height = desc->format == AHARDWAREBUFFER_FORMAT_BLOB ? 1 : 4; Loading
libs/ui/GraphicBuffer.cpp +12 −12 Original line number Diff line number Diff line Loading @@ -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)", Loading @@ -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; } Loading
libs/ui/include/ui/GraphicBuffer.h +9 −5 Original line number Diff line number Diff line Loading @@ -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, Loading