rsProgramStore.h revision a04e30dbb5ab11592b03666bb3d102070759c58e
1326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams/* 2a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk * Copyright (C) 2011 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: 31721acc495b859c6d884725a4f9b5523583dd11c7Jason Sams ProgramStore(Context *, 32721acc495b859c6d884725a4f9b5523583dd11c7Jason Sams bool colorMaskR, bool colorMaskG, bool colorMaskB, bool colorMaskA, 33721acc495b859c6d884725a4f9b5523583dd11c7Jason Sams bool depthMask, bool ditherEnable, 34721acc495b859c6d884725a4f9b5523583dd11c7Jason Sams RsBlendSrcFunc srcFunc, RsBlendDstFunc destFunc, 35721acc495b859c6d884725a4f9b5523583dd11c7Jason Sams RsDepthFunc depthFunc); 36ccc010bb7c0f89e162bf60033968a20be90a903aJason Sams virtual ~ProgramStore(); 37326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 38721acc495b859c6d884725a4f9b5523583dd11c7Jason Sams virtual void setup(const Context *, ProgramStoreState *); 39326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 40fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk virtual void serialize(OStream *stream) const; 41b825f67adb5d1e1751fe108e6dbf9c6f2555c283Alex Sakhartchouk virtual RsA3DClassID getClassId() const { return RS_A3D_CLASS_ID_PROGRAM_STORE; } 42fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk static ProgramStore *createFromStream(Context *rsc, IStream *stream); 43fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk 448feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams void init(); 458feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams 468feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams struct Hal { 478feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams mutable void *drv; 488feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams 498feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams struct State { 508feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams bool ditherEnable; 51326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 528feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams //bool blendEnable; 538feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams bool colorRWriteEnable; 548feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams bool colorGWriteEnable; 558feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams bool colorBWriteEnable; 568feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams bool colorAWriteEnable; 578feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams RsBlendSrcFunc blendSrc; 588feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams RsBlendDstFunc blendDst; 59326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 608feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams //bool depthTestEnable; 618feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams bool depthWriteEnable; 628feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams RsDepthFunc depthFunc; 638feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams }; 648feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams State state; 658feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams }; 668feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams Hal mHal; 678feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams 688feea4e0dec48ea03bd6d32706d058b86dddc5baJason Samsprotected: 69326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams}; 70326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 71afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukclass ProgramStoreState { 72326e0ddf89e8df2837752fbfd7a014814b32082cJason Samspublic: 73ccc010bb7c0f89e162bf60033968a20be90a903aJason Sams ProgramStoreState(); 74ccc010bb7c0f89e162bf60033968a20be90a903aJason Sams ~ProgramStoreState(); 75771565f47fc44608444c00aa8fa3bda769ceaeceJason Sams void init(Context *rsc); 76f2649a961db2995e9e24a6c98f8a419f1496c1b7Jason Sams void deinit(Context *rsc); 77326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 78ccc010bb7c0f89e162bf60033968a20be90a903aJason Sams ObjectBaseRef<ProgramStore> mDefault; 79ccc010bb7c0f89e162bf60033968a20be90a903aJason Sams ObjectBaseRef<ProgramStore> mLast; 80326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams}; 81326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 82326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 83326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 84326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams#endif 85326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 86326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 87326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 88