rsFBOCache.h revision da6d34a5a6ece8c30d20673b9b6ff07d8c91768b
17d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk/* 27d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk * Copyright (C) 2011 The Android Open Source Project 37d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk * 47d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk * Licensed under the Apache License, Version 2.0 (the "License"); 57d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk * you may not use this file except in compliance with the License. 67d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk * You may obtain a copy of the License at 77d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk * 87d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk * http://www.apache.org/licenses/LICENSE-2.0 97d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk * 107d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk * Unless required by applicable law or agreed to in writing, software 117d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk * distributed under the License is distributed on an "AS IS" BASIS, 127d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk * See the License for the specific language governing permissions and 147d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk * limitations under the License. 157d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk */ 167d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk 177d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk#ifndef ANDROID_FRAME_BUFFER_OBJECT_CACHE_H 187d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk#define ANDROID_FRAME_BUFFER_OBJECT_CACHE_H 197d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk 207d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk#include "rsObjectBase.h" 217d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk 227d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk// --------------------------------------------------------------------------- 237d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouknamespace android { 247d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouknamespace renderscript { 257d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk 267d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchoukclass Allocation; 277d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk 287d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchoukclass FBOCache { 297d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchoukpublic: 307d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk FBOCache(); 317d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk ~FBOCache(); 327d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk 33da6d34a5a6ece8c30d20673b9b6ff07d8c91768bAlex Sakhartchouk void init(Context *rsc); 34da6d34a5a6ece8c30d20673b9b6ff07d8c91768bAlex Sakhartchouk void deinit(Context *rsc); 35da6d34a5a6ece8c30d20673b9b6ff07d8c91768bAlex Sakhartchouk 367d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk void bindColorTarget(Context *rsc, Allocation *a, uint32_t slot); 377d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk void bindDepthTarget(Context *, Allocation *a); 387d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk void resetAll(Context *); 397d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk 40c19ff0177a7a0dadfc01b1990f822354fdc95991Alex Sakhartchouk void setup(Context *); 417d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk 42da6d34a5a6ece8c30d20673b9b6ff07d8c91768bAlex Sakhartchouk struct Hal { 43da6d34a5a6ece8c30d20673b9b6ff07d8c91768bAlex Sakhartchouk mutable void *drv; 44da6d34a5a6ece8c30d20673b9b6ff07d8c91768bAlex Sakhartchouk 45da6d34a5a6ece8c30d20673b9b6ff07d8c91768bAlex Sakhartchouk struct State { 46da6d34a5a6ece8c30d20673b9b6ff07d8c91768bAlex Sakhartchouk ObjectBaseRef<Allocation> *colorTargets; 47da6d34a5a6ece8c30d20673b9b6ff07d8c91768bAlex Sakhartchouk uint32_t colorTargetsCount; 48da6d34a5a6ece8c30d20673b9b6ff07d8c91768bAlex Sakhartchouk ObjectBaseRef<Allocation> depthTarget; 49da6d34a5a6ece8c30d20673b9b6ff07d8c91768bAlex Sakhartchouk }; 50da6d34a5a6ece8c30d20673b9b6ff07d8c91768bAlex Sakhartchouk State state; 51da6d34a5a6ece8c30d20673b9b6ff07d8c91768bAlex Sakhartchouk }; 52da6d34a5a6ece8c30d20673b9b6ff07d8c91768bAlex Sakhartchouk Hal mHal; 537d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk 54da6d34a5a6ece8c30d20673b9b6ff07d8c91768bAlex Sakhartchoukprotected: 557d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk bool mDirty; 567d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk void checkError(Context *); 577d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk void setColorAttachment(Context *rsc); 587d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk void setDepthAttachment(Context *rsc); 597d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk bool renderToFramebuffer(); 607d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk 617d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk}; 627d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk 637d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk} // renderscript 647d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk} // android 657d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk 667d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk#endif //ANDROID_FRAME_BUFFER_OBJECT_CACHE_H 67