rsFBOCache.h revision c19ff0177a7a0dadfc01b1990f822354fdc95991
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 337d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk void bindColorTarget(Context *rsc, Allocation *a, uint32_t slot); 347d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk void bindDepthTarget(Context *, Allocation *a); 357d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk void resetAll(Context *); 367d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk 37c19ff0177a7a0dadfc01b1990f822354fdc95991Alex Sakhartchouk void setup(Context *); 387d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk 397d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchoukprotected: 407d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk 417d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk bool mDirty; 427d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk uint32_t mMaxTargets; 437d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk void checkError(Context *); 447d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk void setColorAttachment(Context *rsc); 457d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk void setDepthAttachment(Context *rsc); 467d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk bool renderToFramebuffer(); 477d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk ObjectBaseRef<Allocation> *mColorTargets; 487d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk ObjectBaseRef<Allocation> mDepthTarget; 497d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk 507d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk uint32_t mFBOId; 517d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk 527d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk}; 537d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk 547d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk} // renderscript 557d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk} // android 567d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk 577d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk#endif //ANDROID_FRAME_BUFFER_OBJECT_CACHE_H 58