blob: cc7d4030409afba39de74c0fd4a310949b650337 [file] [log] [blame]
Chia-I Wu527747d2017-03-13 20:38:48 +00001/*
2 **
3 ** Copyright 2012 The Android Open Source Project
4 **
5 ** Licensed under the Apache License Version 2.0(the "License");
6 ** you may not use this file except in compliance with the License.
7 ** You may obtain a copy of the License at
8 **
9 ** http://www.apache.org/licenses/LICENSE-2.0
10 **
11 ** Unless required by applicable law or agreed to in writing software
12 ** distributed under the License is distributed on an "AS IS" BASIS
13 ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND either express or implied.
14 ** See the License for the specific language governing permissions and
15 ** limitations under the License.
16 */
17
18#include <gui/GraphicBufferAlloc.h>
19
20#include <log/log.h>
21
22
23namespace android {
24
25GraphicBufferAlloc::GraphicBufferAlloc() = default;
26GraphicBufferAlloc::~GraphicBufferAlloc() = default;
27
28sp<GraphicBuffer> GraphicBufferAlloc::createGraphicBuffer(uint32_t width,
29 uint32_t height, PixelFormat format, uint32_t layerCount,
30 uint64_t producerUsage, uint64_t consumerUsage,
31 std::string requestorName, status_t* error) {
32 sp<GraphicBuffer> graphicBuffer(new GraphicBuffer(
33 width, height, format, layerCount, producerUsage, consumerUsage,
34 std::move(requestorName)));
35 status_t err = graphicBuffer->initCheck();
36 *error = err;
37 if (err != 0 || graphicBuffer->handle == 0) {
38 if (err == NO_MEMORY) {
39 GraphicBuffer::dumpAllocationsToSystemLog();
40 }
41 ALOGE("GraphicBufferAlloc::createGraphicBuffer(w=%u, h=%u, lc=%u) failed (%s), handle=%p",
42 width, height, layerCount, strerror(-err),
43 graphicBuffer->handle);
44 graphicBuffer.clear();
45 }
46 return graphicBuffer;
47}
48
49} // namespace android