rsProgramStore.cpp revision 771565f47fc44608444c00aa8fa3bda769ceaece
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#include "rsContext.h" 18ccc010bb7c0f89e162bf60033968a20be90a903aJason Sams#include "rsProgramStore.h" 19326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 201aa5a4eb81b8b88aeb5d2b6f4c47356fd0a62923Jason Sams#include <GLES/gl.h> 211aa5a4eb81b8b88aeb5d2b6f4c47356fd0a62923Jason Sams#include <GLES/glext.h> 221aa5a4eb81b8b88aeb5d2b6f4c47356fd0a62923Jason Sams 23326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsusing namespace android; 24326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsusing namespace android::renderscript; 25326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 26326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 27ccc010bb7c0f89e162bf60033968a20be90a903aJason SamsProgramStore::ProgramStore(Context *rsc) : 284815c0d121310cfcd6a8aba4eab77a9910af53acJason Sams Program(rsc) 29326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 30f2649a961db2995e9e24a6c98f8a419f1496c1b7Jason Sams mAllocFile = __FILE__; 31f2649a961db2995e9e24a6c98f8a419f1496c1b7Jason Sams mAllocLine = __LINE__; 32326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mDitherEnable = true; 33326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendEnable = false; 34326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mColorRWriteEnable = true; 35326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mColorGWriteEnable = true; 36326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mColorBWriteEnable = true; 37326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mColorAWriteEnable = true; 38326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendSrc = GL_ONE; 39326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendDst = GL_ZERO; 40326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 41326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 42326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mDepthTestEnable = false; 43326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mDepthWriteEnable = true; 44326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mDepthFunc = GL_LESS; 45326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 46326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 47326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 48326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 49ccc010bb7c0f89e162bf60033968a20be90a903aJason SamsProgramStore::~ProgramStore() 50326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 51326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 52326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 53ccc010bb7c0f89e162bf60033968a20be90a903aJason Samsvoid ProgramStore::setupGL(const Context *rsc, ProgramStoreState *state) 54326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 55cfb1d11ce6826fce7241d316d8b7dcab661f63a6Jason Sams if (state->mLast.get() == this) { 56cfb1d11ce6826fce7241d316d8b7dcab661f63a6Jason Sams return; 57cfb1d11ce6826fce7241d316d8b7dcab661f63a6Jason Sams } 58cfb1d11ce6826fce7241d316d8b7dcab661f63a6Jason Sams state->mLast.set(this); 59cfb1d11ce6826fce7241d316d8b7dcab661f63a6Jason Sams 60326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams glColorMask(mColorRWriteEnable, 61326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mColorGWriteEnable, 62326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mColorBWriteEnable, 63326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mColorAWriteEnable); 64326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams if (mBlendEnable) { 65326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams glEnable(GL_BLEND); 66326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams glBlendFunc(mBlendSrc, mBlendDst); 67326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams } else { 68326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams glDisable(GL_BLEND); 69326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams } 70326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 71fd10b71b33b7340c00c11c8684ca940e83b5aacaJason Sams //LOGE("pfs %i, %i, %x", mDepthWriteEnable, mDepthTestEnable, mDepthFunc); 72fd10b71b33b7340c00c11c8684ca940e83b5aacaJason Sams 73326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams glDepthMask(mDepthWriteEnable); 74fd10b71b33b7340c00c11c8684ca940e83b5aacaJason Sams if(mDepthTestEnable || mDepthWriteEnable) { 75326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams glEnable(GL_DEPTH_TEST); 76326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams glDepthFunc(mDepthFunc); 77326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams } else { 78326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams glDisable(GL_DEPTH_TEST); 79326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams } 80326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 81326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams if (mDitherEnable) { 82326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams glEnable(GL_DITHER); 83326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams } else { 84326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams glDisable(GL_DITHER); 85326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams } 86c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams} 87326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 88ccc010bb7c0f89e162bf60033968a20be90a903aJason Samsvoid ProgramStore::setupGL2(const Context *rsc, ProgramStoreState *state) 89c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams{ 90c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams if (state->mLast.get() == this) { 91c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams return; 92c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams } 93c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams state->mLast.set(this); 94c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams 95c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams glColorMask(mColorRWriteEnable, 96c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams mColorGWriteEnable, 97c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams mColorBWriteEnable, 98c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams mColorAWriteEnable); 99c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams if (mBlendEnable) { 100c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams glEnable(GL_BLEND); 101c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams glBlendFunc(mBlendSrc, mBlendDst); 102c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams } else { 103c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams glDisable(GL_BLEND); 104c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams } 105326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 106c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams //LOGE("pfs %i, %i, %x", mDepthWriteEnable, mDepthTestEnable, mDepthFunc); 107c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams 108c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams glDepthMask(mDepthWriteEnable); 109c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams if(mDepthTestEnable || mDepthWriteEnable) { 110c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams glEnable(GL_DEPTH_TEST); 111c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams glDepthFunc(mDepthFunc); 112c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams } else { 113c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams glDisable(GL_DEPTH_TEST); 114c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams } 115c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams 116c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams if (mDitherEnable) { 117c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams glEnable(GL_DITHER); 118c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams } else { 119c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams glDisable(GL_DITHER); 120c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams } 121326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 122326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 123c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams 124ccc010bb7c0f89e162bf60033968a20be90a903aJason Samsvoid ProgramStore::setDitherEnable(bool enable) 125326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 126326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mDitherEnable = enable; 127326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 128326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 129ccc010bb7c0f89e162bf60033968a20be90a903aJason Samsvoid ProgramStore::setDepthFunc(RsDepthFunc func) 130326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 131326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mDepthTestEnable = true; 132326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 133326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams switch(func) { 134326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_DEPTH_FUNC_ALWAYS: 135326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mDepthTestEnable = false; 136326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mDepthFunc = GL_ALWAYS; 137326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 138326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_DEPTH_FUNC_LESS: 139326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mDepthFunc = GL_LESS; 140326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 141326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_DEPTH_FUNC_LEQUAL: 142326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mDepthFunc = GL_LEQUAL; 143326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 144326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_DEPTH_FUNC_GREATER: 145326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mDepthFunc = GL_GREATER; 146326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 147326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_DEPTH_FUNC_GEQUAL: 148326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mDepthFunc = GL_GEQUAL; 149326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 150326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_DEPTH_FUNC_EQUAL: 151326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mDepthFunc = GL_EQUAL; 152326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 153326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_DEPTH_FUNC_NOTEQUAL: 154326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mDepthFunc = GL_NOTEQUAL; 155326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 156326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams } 157326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 158326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 159ccc010bb7c0f89e162bf60033968a20be90a903aJason Samsvoid ProgramStore::setDepthMask(bool mask) 160326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 161326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mDepthWriteEnable = mask; 162326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 163326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 164ccc010bb7c0f89e162bf60033968a20be90a903aJason Samsvoid ProgramStore::setBlendFunc(RsBlendSrcFunc src, RsBlendDstFunc dst) 165326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 166326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendEnable = true; 167cfb1d11ce6826fce7241d316d8b7dcab661f63a6Jason Sams if ((src == RS_BLEND_SRC_ONE) && 168326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams (dst == RS_BLEND_DST_ZERO)) { 169326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendEnable = false; 170326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams } 171326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 172326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams switch(src) { 173326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_SRC_ZERO: 174326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendSrc = GL_ZERO; 175326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 176326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_SRC_ONE: 177326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendSrc = GL_ONE; 178326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 179326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_SRC_DST_COLOR: 180326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendSrc = GL_DST_COLOR; 181326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 182326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_SRC_ONE_MINUS_DST_COLOR: 183326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendSrc = GL_ONE_MINUS_DST_COLOR; 184326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 185326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_SRC_SRC_ALPHA: 186326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendSrc = GL_SRC_ALPHA; 187326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 188326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_SRC_ONE_MINUS_SRC_ALPHA: 189326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendSrc = GL_ONE_MINUS_SRC_ALPHA; 190326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 191326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_SRC_DST_ALPHA: 192326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendSrc = GL_DST_ALPHA; 193326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 194326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_SRC_ONE_MINUS_DST_ALPHA: 195326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendSrc = GL_ONE_MINUS_DST_ALPHA; 196326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 197326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_SRC_SRC_ALPHA_SATURATE: 198326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendSrc = GL_SRC_ALPHA_SATURATE; 199326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 200326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams } 201326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 202326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams switch(dst) { 203326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_DST_ZERO: 204326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendDst = GL_ZERO; 205326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 206326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_DST_ONE: 207326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendDst = GL_ONE; 208326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 209326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_DST_SRC_COLOR: 210326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendDst = GL_SRC_COLOR; 211326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 212326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_DST_ONE_MINUS_SRC_COLOR: 213326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendDst = GL_ONE_MINUS_SRC_COLOR; 214326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 215326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_DST_SRC_ALPHA: 216326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendDst = GL_SRC_ALPHA; 217326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 218326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_DST_ONE_MINUS_SRC_ALPHA: 219326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendDst = GL_ONE_MINUS_SRC_ALPHA; 220326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 221326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_DST_DST_ALPHA: 222326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendDst = GL_DST_ALPHA; 223326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 224326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_DST_ONE_MINUS_DST_ALPHA: 225326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendDst = GL_ONE_MINUS_DST_ALPHA; 226326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 227326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams } 228326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 229326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 230ccc010bb7c0f89e162bf60033968a20be90a903aJason Samsvoid ProgramStore::setColorMask(bool r, bool g, bool b, bool a) 231326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 232326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mColorRWriteEnable = r; 233326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mColorGWriteEnable = g; 234326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mColorBWriteEnable = b; 235326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mColorAWriteEnable = a; 236326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 237326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 238326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 239ccc010bb7c0f89e162bf60033968a20be90a903aJason SamsProgramStoreState::ProgramStoreState() 240326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 241326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mPFS = NULL; 242326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 243326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 244ccc010bb7c0f89e162bf60033968a20be90a903aJason SamsProgramStoreState::~ProgramStoreState() 245326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 246326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams delete mPFS; 247326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 248326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 249326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 250771565f47fc44608444c00aa8fa3bda769ceaeceJason Samsvoid ProgramStoreState::init(Context *rsc) 2518ce125be69531dbf3a7e856d5e59d1b8e2789db0Jason Sams{ 252ccc010bb7c0f89e162bf60033968a20be90a903aJason Sams ProgramStore *pfs = new ProgramStore(rsc); 2538ce125be69531dbf3a7e856d5e59d1b8e2789db0Jason Sams mDefault.set(pfs); 2548ce125be69531dbf3a7e856d5e59d1b8e2789db0Jason Sams} 2558ce125be69531dbf3a7e856d5e59d1b8e2789db0Jason Sams 256ccc010bb7c0f89e162bf60033968a20be90a903aJason Samsvoid ProgramStoreState::deinit(Context *rsc) 257f2649a961db2995e9e24a6c98f8a419f1496c1b7Jason Sams{ 258f2649a961db2995e9e24a6c98f8a419f1496c1b7Jason Sams mDefault.clear(); 259f2649a961db2995e9e24a6c98f8a419f1496c1b7Jason Sams mLast.clear(); 260f2649a961db2995e9e24a6c98f8a419f1496c1b7Jason Sams} 261f2649a961db2995e9e24a6c98f8a419f1496c1b7Jason Sams 262326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 263326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsnamespace android { 264326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsnamespace renderscript { 265326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 266ccc010bb7c0f89e162bf60033968a20be90a903aJason Samsvoid rsi_ProgramStoreBegin(Context * rsc, RsElement in, RsElement out) 267326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 268326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams delete rsc->mStateFragmentStore.mPFS; 269ccc010bb7c0f89e162bf60033968a20be90a903aJason Sams rsc->mStateFragmentStore.mPFS = new ProgramStore(rsc); 270326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 271326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 272326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 273ccc010bb7c0f89e162bf60033968a20be90a903aJason Samsvoid rsi_ProgramStoreDepthFunc(Context *rsc, RsDepthFunc func) 274326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 275326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams rsc->mStateFragmentStore.mPFS->setDepthFunc(func); 276326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 277326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 278ccc010bb7c0f89e162bf60033968a20be90a903aJason Samsvoid rsi_ProgramStoreDepthMask(Context *rsc, bool mask) 279326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 280326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams rsc->mStateFragmentStore.mPFS->setDepthMask(mask); 281326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 282326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 283ccc010bb7c0f89e162bf60033968a20be90a903aJason Samsvoid rsi_ProgramStoreColorMask(Context *rsc, bool r, bool g, bool b, bool a) 284326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 285326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams rsc->mStateFragmentStore.mPFS->setColorMask(r, g, b, a); 286326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 287326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 288ccc010bb7c0f89e162bf60033968a20be90a903aJason Samsvoid rsi_ProgramStoreBlendFunc(Context *rsc, RsBlendSrcFunc src, RsBlendDstFunc dst) 289326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 290326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams rsc->mStateFragmentStore.mPFS->setBlendFunc(src, dst); 291326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 292326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 293ccc010bb7c0f89e162bf60033968a20be90a903aJason SamsRsProgramStore rsi_ProgramStoreCreate(Context *rsc) 294326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 295ccc010bb7c0f89e162bf60033968a20be90a903aJason Sams ProgramStore *pfs = rsc->mStateFragmentStore.mPFS; 2969397e30ce5fe3f6af9212a93b490836b04fdfffaJason Sams pfs->incUserRef(); 297326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams rsc->mStateFragmentStore.mPFS = 0; 298326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams return pfs; 299326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 300326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 301ccc010bb7c0f89e162bf60033968a20be90a903aJason Samsvoid rsi_ProgramStoreDither(Context *rsc, bool enable) 302326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 303326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams rsc->mStateFragmentStore.mPFS->setDitherEnable(enable); 304326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 305326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 306326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 307326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 308326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 309