rsProgramStore.cpp revision afb743aca56c18beb7ab924e75cb6e070ef3e55a
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 17fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk#ifndef ANDROID_RS_BUILD_FOR_HOST 18326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams#include "rsContext.h" 191aa5a4eb81b8b88aeb5d2b6f4c47356fd0a62923Jason Sams#include <GLES/gl.h> 201aa5a4eb81b8b88aeb5d2b6f4c47356fd0a62923Jason Sams#include <GLES/glext.h> 21fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk#else 22fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk#include "rsContextHostStub.h" 23fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk#include <OpenGL/gl.h> 24fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk#include <OpenGl/glext.h> 25fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk#endif //ANDROID_RS_BUILD_FOR_HOST 26fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk 27fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk#include "rsProgramStore.h" 281aa5a4eb81b8b88aeb5d2b6f4c47356fd0a62923Jason Sams 29326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsusing namespace android; 30326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsusing namespace android::renderscript; 31326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 32326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 33afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex SakhartchoukProgramStore::ProgramStore(Context *rsc) : Program(rsc) { 34326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mDitherEnable = true; 35326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendEnable = false; 36326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mColorRWriteEnable = true; 37326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mColorGWriteEnable = true; 38326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mColorBWriteEnable = true; 39326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mColorAWriteEnable = true; 40326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendSrc = GL_ONE; 41326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendDst = GL_ZERO; 42326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 43326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mDepthTestEnable = false; 44326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mDepthWriteEnable = true; 45326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mDepthFunc = GL_LESS; 46326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 47326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 48afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex SakhartchoukProgramStore::~ProgramStore() { 49326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 50326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 51afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukvoid ProgramStore::setupGL2(const Context *rsc, ProgramStoreState *state) { 52c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams if (state->mLast.get() == this) { 53c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams return; 54c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams } 55c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams state->mLast.set(this); 56c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams 57c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams glColorMask(mColorRWriteEnable, 58c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams mColorGWriteEnable, 59c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams mColorBWriteEnable, 60c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams mColorAWriteEnable); 61c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams if (mBlendEnable) { 62c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams glEnable(GL_BLEND); 63c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams glBlendFunc(mBlendSrc, mBlendDst); 64c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams } else { 65c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams glDisable(GL_BLEND); 66c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams } 67326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 68c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams //LOGE("pfs %i, %i, %x", mDepthWriteEnable, mDepthTestEnable, mDepthFunc); 69c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams 706b8552a4f6a44848255d77222e66aa92dd21b1b5Jason Sams if (rsc->mUserSurfaceConfig.depthMin > 0) { 716b8552a4f6a44848255d77222e66aa92dd21b1b5Jason Sams glDepthMask(mDepthWriteEnable); 72afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchouk if (mDepthTestEnable || mDepthWriteEnable) { 736b8552a4f6a44848255d77222e66aa92dd21b1b5Jason Sams glEnable(GL_DEPTH_TEST); 746b8552a4f6a44848255d77222e66aa92dd21b1b5Jason Sams glDepthFunc(mDepthFunc); 756b8552a4f6a44848255d77222e66aa92dd21b1b5Jason Sams } else { 766b8552a4f6a44848255d77222e66aa92dd21b1b5Jason Sams glDisable(GL_DEPTH_TEST); 776b8552a4f6a44848255d77222e66aa92dd21b1b5Jason Sams } 78c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams } else { 796b8552a4f6a44848255d77222e66aa92dd21b1b5Jason Sams glDepthMask(false); 80c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams glDisable(GL_DEPTH_TEST); 81c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams } 82c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams 836b8552a4f6a44848255d77222e66aa92dd21b1b5Jason Sams if (rsc->mUserSurfaceConfig.stencilMin > 0) { 846b8552a4f6a44848255d77222e66aa92dd21b1b5Jason Sams } else { 856b8552a4f6a44848255d77222e66aa92dd21b1b5Jason Sams glStencilMask(0); 866b8552a4f6a44848255d77222e66aa92dd21b1b5Jason Sams glDisable(GL_STENCIL_TEST); 876b8552a4f6a44848255d77222e66aa92dd21b1b5Jason Sams } 886b8552a4f6a44848255d77222e66aa92dd21b1b5Jason Sams 89c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams if (mDitherEnable) { 90c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams glEnable(GL_DITHER); 91c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams } else { 92c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams glDisable(GL_DITHER); 93c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams } 94326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 95326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 96afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukvoid ProgramStore::setDitherEnable(bool enable) { 97326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mDitherEnable = enable; 98326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 99326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 100afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukvoid ProgramStore::serialize(OStream *stream) const { 101fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk} 102fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk 103afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex SakhartchoukProgramStore *ProgramStore::createFromStream(Context *rsc, IStream *stream) { 104fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk return NULL; 105fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk} 106fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk 107afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukvoid ProgramStore::setDepthFunc(RsDepthFunc func) { 108326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mDepthTestEnable = true; 109326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 110afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchouk switch (func) { 111326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_DEPTH_FUNC_ALWAYS: 112326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mDepthTestEnable = false; 113326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mDepthFunc = GL_ALWAYS; 114326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 115326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_DEPTH_FUNC_LESS: 116326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mDepthFunc = GL_LESS; 117326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 118326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_DEPTH_FUNC_LEQUAL: 119326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mDepthFunc = GL_LEQUAL; 120326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 121326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_DEPTH_FUNC_GREATER: 122326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mDepthFunc = GL_GREATER; 123326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 124326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_DEPTH_FUNC_GEQUAL: 125326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mDepthFunc = GL_GEQUAL; 126326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 127326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_DEPTH_FUNC_EQUAL: 128326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mDepthFunc = GL_EQUAL; 129326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 130326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_DEPTH_FUNC_NOTEQUAL: 131326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mDepthFunc = GL_NOTEQUAL; 132326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 133326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams } 134326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 135326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 136afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukvoid ProgramStore::setDepthMask(bool mask) { 137326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mDepthWriteEnable = mask; 138326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 139326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 140afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukvoid ProgramStore::setBlendFunc(RsBlendSrcFunc src, RsBlendDstFunc dst) { 141326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendEnable = true; 142cfb1d11ce6826fce7241d316d8b7dcab661f63a6Jason Sams if ((src == RS_BLEND_SRC_ONE) && 143326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams (dst == RS_BLEND_DST_ZERO)) { 144326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendEnable = false; 145326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams } 146326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 147afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchouk switch (src) { 148326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_SRC_ZERO: 149326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendSrc = GL_ZERO; 150326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 151326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_SRC_ONE: 152326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendSrc = GL_ONE; 153326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 154326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_SRC_DST_COLOR: 155326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendSrc = GL_DST_COLOR; 156326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 157326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_SRC_ONE_MINUS_DST_COLOR: 158326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendSrc = GL_ONE_MINUS_DST_COLOR; 159326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 160326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_SRC_SRC_ALPHA: 161326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendSrc = GL_SRC_ALPHA; 162326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 163326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_SRC_ONE_MINUS_SRC_ALPHA: 164326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendSrc = GL_ONE_MINUS_SRC_ALPHA; 165326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 166326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_SRC_DST_ALPHA: 167326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendSrc = GL_DST_ALPHA; 168326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 169326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_SRC_ONE_MINUS_DST_ALPHA: 170326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendSrc = GL_ONE_MINUS_DST_ALPHA; 171326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 172326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_SRC_SRC_ALPHA_SATURATE: 173326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendSrc = GL_SRC_ALPHA_SATURATE; 174326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 175326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams } 176326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 177afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchouk switch (dst) { 178326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_DST_ZERO: 179326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendDst = GL_ZERO; 180326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 181326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_DST_ONE: 182326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendDst = GL_ONE; 183326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 184326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_DST_SRC_COLOR: 185326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendDst = GL_SRC_COLOR; 186326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 187326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_DST_ONE_MINUS_SRC_COLOR: 188326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendDst = GL_ONE_MINUS_SRC_COLOR; 189326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 190326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_DST_SRC_ALPHA: 191326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendDst = GL_SRC_ALPHA; 192326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 193326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_DST_ONE_MINUS_SRC_ALPHA: 194326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendDst = GL_ONE_MINUS_SRC_ALPHA; 195326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 196326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_DST_DST_ALPHA: 197326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendDst = GL_DST_ALPHA; 198326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 199326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_DST_ONE_MINUS_DST_ALPHA: 200326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendDst = GL_ONE_MINUS_DST_ALPHA; 201326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 202326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams } 203326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 204326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 205afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukvoid ProgramStore::setColorMask(bool r, bool g, bool b, bool a) { 206326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mColorRWriteEnable = r; 207326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mColorGWriteEnable = g; 208326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mColorBWriteEnable = b; 209326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mColorAWriteEnable = a; 210326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 211326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 212afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex SakhartchoukProgramStoreState::ProgramStoreState() { 213326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mPFS = NULL; 214326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 215326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 216afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex SakhartchoukProgramStoreState::~ProgramStoreState() { 217225afd317e101a7be5fe02c0a86361146ea89f05Jason Sams ObjectBase::checkDelete(mPFS); 218225afd317e101a7be5fe02c0a86361146ea89f05Jason Sams mPFS = NULL; 219326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 220326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 221afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukvoid ProgramStoreState::init(Context *rsc) { 222ccc010bb7c0f89e162bf60033968a20be90a903aJason Sams ProgramStore *pfs = new ProgramStore(rsc); 2238ce125be69531dbf3a7e856d5e59d1b8e2789db0Jason Sams mDefault.set(pfs); 2248ce125be69531dbf3a7e856d5e59d1b8e2789db0Jason Sams} 2258ce125be69531dbf3a7e856d5e59d1b8e2789db0Jason Sams 226afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukvoid ProgramStoreState::deinit(Context *rsc) { 227f2649a961db2995e9e24a6c98f8a419f1496c1b7Jason Sams mDefault.clear(); 228f2649a961db2995e9e24a6c98f8a419f1496c1b7Jason Sams mLast.clear(); 229f2649a961db2995e9e24a6c98f8a419f1496c1b7Jason Sams} 230f2649a961db2995e9e24a6c98f8a419f1496c1b7Jason Sams 231326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsnamespace android { 232326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsnamespace renderscript { 233326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 234afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukvoid rsi_ProgramStoreBegin(Context * rsc, RsElement in, RsElement out) { 235225afd317e101a7be5fe02c0a86361146ea89f05Jason Sams ObjectBase::checkDelete(rsc->mStateFragmentStore.mPFS); 236ccc010bb7c0f89e162bf60033968a20be90a903aJason Sams rsc->mStateFragmentStore.mPFS = new ProgramStore(rsc); 237326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 238326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 239afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukvoid rsi_ProgramStoreDepthFunc(Context *rsc, RsDepthFunc func) { 240326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams rsc->mStateFragmentStore.mPFS->setDepthFunc(func); 241326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 242326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 243afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukvoid rsi_ProgramStoreDepthMask(Context *rsc, bool mask) { 244326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams rsc->mStateFragmentStore.mPFS->setDepthMask(mask); 245326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 246326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 247afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukvoid rsi_ProgramStoreColorMask(Context *rsc, bool r, bool g, bool b, bool a) { 248326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams rsc->mStateFragmentStore.mPFS->setColorMask(r, g, b, a); 249326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 250326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 251afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukvoid rsi_ProgramStoreBlendFunc(Context *rsc, RsBlendSrcFunc src, RsBlendDstFunc dst) { 252326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams rsc->mStateFragmentStore.mPFS->setBlendFunc(src, dst); 253326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 254326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 255afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex SakhartchoukRsProgramStore rsi_ProgramStoreCreate(Context *rsc) { 256ccc010bb7c0f89e162bf60033968a20be90a903aJason Sams ProgramStore *pfs = rsc->mStateFragmentStore.mPFS; 2579397e30ce5fe3f6af9212a93b490836b04fdfffaJason Sams pfs->incUserRef(); 258326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams rsc->mStateFragmentStore.mPFS = 0; 259326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams return pfs; 260326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 261326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 262afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukvoid rsi_ProgramStoreDither(Context *rsc, bool enable) { 263326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams rsc->mStateFragmentStore.mPFS->setDitherEnable(enable); 264326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 265326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 266326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 267326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 268