rsProgramStore.h revision 8feea4e0dec48ea03bd6d32706d058b86dddc5ba
1326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams/* 2326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * Copyright (C) 2009 The Android Open Source Project 3326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * 4326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 5326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * you may not use this file except in compliance with the License. 6326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * You may obtain a copy of the License at 7326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * 8326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * http://www.apache.org/licenses/LICENSE-2.0 9326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * 10326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * Unless required by applicable law or agreed to in writing, software 11326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * distributed under the License is distributed on an "AS IS" BASIS, 12326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * See the License for the specific language governing permissions and 14326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * limitations under the License. 15326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams */ 16326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 17326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams#ifndef ANDROID_RS_PROGRAM_FRAGMENT_STORE_H 18326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams#define ANDROID_RS_PROGRAM_FRAGMENT_STORE_H 19326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 20326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams#include "rsProgram.h" 21fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk#include "rsStream.h" 22326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 23326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams// --------------------------------------------------------------------------- 24326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsnamespace android { 25326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsnamespace renderscript { 26326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 27ccc010bb7c0f89e162bf60033968a20be90a903aJason Samsclass ProgramStoreState; 28326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 29afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukclass ProgramStore : public Program { 30326e0ddf89e8df2837752fbfd7a014814b32082cJason Samspublic: 31ccc010bb7c0f89e162bf60033968a20be90a903aJason Sams ProgramStore(Context *); 32ccc010bb7c0f89e162bf60033968a20be90a903aJason Sams virtual ~ProgramStore(); 33326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 34ccc010bb7c0f89e162bf60033968a20be90a903aJason Sams virtual void setupGL2(const Context *, ProgramStoreState *); 35326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 36326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams void setDepthFunc(RsDepthFunc); 37326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams void setDepthMask(bool); 38326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 39326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams void setBlendFunc(RsBlendSrcFunc src, RsBlendDstFunc dst); 40326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams void setColorMask(bool, bool, bool, bool); 41326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 42326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams void setDitherEnable(bool); 43326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 44fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk virtual void serialize(OStream *stream) const; 45b825f67adb5d1e1751fe108e6dbf9c6f2555c283Alex Sakhartchouk virtual RsA3DClassID getClassId() const { return RS_A3D_CLASS_ID_PROGRAM_STORE; } 46fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk static ProgramStore *createFromStream(Context *rsc, IStream *stream); 47fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk 488feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams void init(); 498feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams 508feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams struct Hal { 518feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams mutable void *drv; 528feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams 538feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams struct State { 548feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams bool ditherEnable; 55326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 568feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams //bool blendEnable; 578feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams bool colorRWriteEnable; 588feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams bool colorGWriteEnable; 598feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams bool colorBWriteEnable; 608feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams bool colorAWriteEnable; 618feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams RsBlendSrcFunc blendSrc; 628feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams RsBlendDstFunc blendDst; 63326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 648feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams //bool depthTestEnable; 658feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams bool depthWriteEnable; 668feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams RsDepthFunc depthFunc; 678feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams }; 688feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams State state; 69326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 708feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams 718feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams }; 728feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams Hal mHal; 738feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams 748feea4e0dec48ea03bd6d32706d058b86dddc5baJason Samsprotected: 75326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams}; 76326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 77afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukclass ProgramStoreState { 78326e0ddf89e8df2837752fbfd7a014814b32082cJason Samspublic: 79ccc010bb7c0f89e162bf60033968a20be90a903aJason Sams ProgramStoreState(); 80ccc010bb7c0f89e162bf60033968a20be90a903aJason Sams ~ProgramStoreState(); 81771565f47fc44608444c00aa8fa3bda769ceaeceJason Sams void init(Context *rsc); 82f2649a961db2995e9e24a6c98f8a419f1496c1b7Jason Sams void deinit(Context *rsc); 83326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 84ccc010bb7c0f89e162bf60033968a20be90a903aJason Sams ObjectBaseRef<ProgramStore> mDefault; 85ccc010bb7c0f89e162bf60033968a20be90a903aJason Sams ObjectBaseRef<ProgramStore> mLast; 86cfb1d11ce6826fce7241d316d8b7dcab661f63a6Jason Sams 87cfb1d11ce6826fce7241d316d8b7dcab661f63a6Jason Sams 88ccc010bb7c0f89e162bf60033968a20be90a903aJason Sams ProgramStore *mPFS; 89326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams}; 90326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 91326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 92326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 93326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams#endif 94326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 95326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 96326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 97