18b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol/* 28b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol// Copyright (c) 2014 Intel Corporation 38b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol// 48b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol// Licensed under the Apache License, Version 2.0 (the "License"); 58b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol// you may not use this file except in compliance with the License. 68b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol// You may obtain a copy of the License at 78b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol// 88b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol// http://www.apache.org/licenses/LICENSE-2.0 98b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol// 108b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol// Unless required by applicable law or agreed to in writing, software 118b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol// distributed under the License is distributed on an "AS IS" BASIS, 128b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 138b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol// See the License for the specific language governing permissions and 148b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol// limitations under the License. 158b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol*/ 168b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol#ifndef GRAPHIC_BUFFER_H 178b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol#define GRAPHIC_BUFFER_H 188b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol 198b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol#include <DataBuffer.h> 208b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol 218b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol 228b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujolnamespace android { 238b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujolnamespace intel { 248b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol 258b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujolclass GraphicBuffer : public DataBuffer { 268b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujolpublic: 278b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol enum { 288b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol USAGE_INVALID = 0xffffffff, 298b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol }; 308b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol 318b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujolpublic: 328b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol GraphicBuffer(buffer_handle_t handle); 338b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol virtual ~GraphicBuffer() {} 348b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol 358b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol virtual void resetBuffer(buffer_handle_t handle); 368b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol 378b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol uint32_t getUsage() const { return mUsage; } 388b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol uint32_t getBpp() const { return mBpp; } 398b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol 408b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol static bool isProtectedUsage(uint32_t usage); 418b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol static bool isProtectedBuffer(GraphicBuffer *buffer); 428b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol 438b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol static bool isCompressionUsage(uint32_t usage); 448b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol static bool isCompressionBuffer(GraphicBuffer *buffer); 458b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol 468b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujolprivate: 478b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol void initBuffer(buffer_handle_t handle); 488b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol 498b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujolprotected: 508b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol uint32_t mUsage; 518b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol uint32_t mBpp; 528b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol}; 538b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol 548b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol} // namespace intel 558b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol} // namespace android 568b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol 578b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol#endif /* GRAPHIC_BUFFER_H */ 58