blob: f2d367711a559b1eaa149f3bc908d35ac863001f [file] [log] [blame]
Mathias Agopianf33e4b62012-09-20 16:54:14 -07001/*
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
Mark Salyzyn7823e122016-09-29 08:08:05 -070018#include <log/log.h>
Mathias Agopianf33e4b62012-09-20 16:54:14 -070019
20#include <ui/GraphicBuffer.h>
21
Jamie Gennis392edd82012-11-29 23:26:29 -080022#include <gui/GraphicBufferAlloc.h>
Mathias Agopianf33e4b62012-09-20 16:54:14 -070023
24// ----------------------------------------------------------------------------
25namespace android {
26// ----------------------------------------------------------------------------
27
28GraphicBufferAlloc::GraphicBufferAlloc() {
29}
30
31GraphicBufferAlloc::~GraphicBufferAlloc() {
32}
33
Dan Stozad723bd72014-11-18 10:24:03 -080034sp<GraphicBuffer> GraphicBufferAlloc::createGraphicBuffer(uint32_t width,
Craig Donner6ebc46a2016-10-21 15:23:44 -070035 uint32_t height, PixelFormat format, uint32_t layerCount,
Craig Donnere96a3252017-02-02 12:13:34 -080036 uint64_t producerUsage, uint64_t consumerUsage,
37 std::string requestorName, status_t* error) {
Dan Stoza024e9312016-08-24 12:17:29 -070038 sp<GraphicBuffer> graphicBuffer(new GraphicBuffer(
Craig Donnere96a3252017-02-02 12:13:34 -080039 width, height, format, layerCount, producerUsage, consumerUsage,
Craig Donner6ebc46a2016-10-21 15:23:44 -070040 std::move(requestorName)));
Mathias Agopianf33e4b62012-09-20 16:54:14 -070041 status_t err = graphicBuffer->initCheck();
42 *error = err;
43 if (err != 0 || graphicBuffer->handle == 0) {
44 if (err == NO_MEMORY) {
45 GraphicBuffer::dumpAllocationsToSystemLog();
46 }
Craig Donner6ebc46a2016-10-21 15:23:44 -070047 ALOGE("GraphicBufferAlloc::createGraphicBuffer(w=%u, h=%u, lc=%u) "
Mathias Agopianf33e4b62012-09-20 16:54:14 -070048 "failed (%s), handle=%p",
Craig Donner6ebc46a2016-10-21 15:23:44 -070049 width, height, layerCount, strerror(-err),
50 graphicBuffer->handle);
Mathias Agopianf33e4b62012-09-20 16:54:14 -070051 return 0;
52 }
53 return graphicBuffer;
54}
55
56// ----------------------------------------------------------------------------
57}; // namespace android
58// ----------------------------------------------------------------------------