1a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk/* 2a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk * Copyright (C) 2011 The Android Open Source Project 3a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk * 4a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk * Licensed under the Apache License, Version 2.0 (the "License"); 5a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk * you may not use this file except in compliance with the License. 6a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk * You may obtain a copy of the License at 7a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk * 8a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk * http://www.apache.org/licenses/LICENSE-2.0 9a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk * 10a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk * Unless required by applicable law or agreed to in writing, software 11a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk * distributed under the License is distributed on an "AS IS" BASIS, 12a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk * See the License for the specific language governing permissions and 14a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk * limitations under the License. 15a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk */ 16a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk 17a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk#ifndef _RSD_FRAMEBUFFER_OBJ_H_ 18a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk#define _RSD_FRAMEBUFFER_OBJ_H_ 19a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk 20a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk#include <rsContext.h> 21a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk 221cd84930b25bf12e094b416a0ea4ae5fe839f537Stephen Hinesstruct DrvAllocation; 23a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk 24a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchoukclass RsdFrameBufferObj { 25a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchoukpublic: 26a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk RsdFrameBufferObj(); 27a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk ~RsdFrameBufferObj(); 28a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk 29a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk void setActive(const android::renderscript::Context *rsc); 30a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk void setColorTarget(DrvAllocation *color, uint32_t index) { 31a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk mColorTargets[index] = color; 32a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk mDirty = true; 33a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk } 34a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk void setDepthTarget(DrvAllocation *depth) { 35a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk mDepthTarget = depth; 36a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk mDirty = true; 37a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk } 38a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk void setDimensions(uint32_t width, uint32_t height) { 39a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk mWidth = width; 40a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk mHeight = height; 41a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk } 42a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchoukprotected: 43a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk uint32_t mFBOId; 44a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk DrvAllocation **mColorTargets; 45a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk uint32_t mColorTargetsCount; 46a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk DrvAllocation *mDepthTarget; 47a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk 48a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk uint32_t mWidth; 49a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk uint32_t mHeight; 50a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk 51a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk bool mDirty; 52a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk 53a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk bool renderToFramebuffer(); 54a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk void checkError(const android::renderscript::Context *rsc); 55a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk void setColorAttachment(); 56a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk void setDepthAttachment(); 57a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk}; 58a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk 59a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk#endif //_RSD_FRAMEBUFFER_STATE_H_ 60