rsProgramStore.cpp revision 326e0ddf89e8df2837752fbfd7a014814b32082c
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" 18326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams#include "rsProgramFragmentStore.h" 19326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 20326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsusing namespace android; 21326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsusing namespace android::renderscript; 22326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 23326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 24326e0ddf89e8df2837752fbfd7a014814b32082cJason SamsProgramFragmentStore::ProgramFragmentStore(Element *in, Element *out) : 25326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams Program(in, out) 26326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 27326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mDitherEnable = true; 28326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendEnable = false; 29326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mColorRWriteEnable = true; 30326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mColorGWriteEnable = true; 31326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mColorBWriteEnable = true; 32326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mColorAWriteEnable = true; 33326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendSrc = GL_ONE; 34326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendDst = GL_ZERO; 35326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 36326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 37326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mDepthTestEnable = false; 38326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mDepthWriteEnable = true; 39326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mDepthFunc = GL_LESS; 40326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 41326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 42326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 43326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 44326e0ddf89e8df2837752fbfd7a014814b32082cJason SamsProgramFragmentStore::~ProgramFragmentStore() 45326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 46326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 47326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 48326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsvoid ProgramFragmentStore::setupGL() 49326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 50326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams glColorMask(mColorRWriteEnable, 51326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mColorGWriteEnable, 52326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mColorBWriteEnable, 53326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mColorAWriteEnable); 54326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams if (mBlendEnable) { 55326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams glEnable(GL_BLEND); 56326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams glBlendFunc(mBlendSrc, mBlendDst); 57326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams } else { 58326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams glDisable(GL_BLEND); 59326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams } 60326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 61326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams glDepthMask(mDepthWriteEnable); 62326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams if(mDepthTestEnable) { 63326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams glEnable(GL_DEPTH_TEST); 64326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams glDepthFunc(mDepthFunc); 65326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams } else { 66326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams glDisable(GL_DEPTH_TEST); 67326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams } 68326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 69326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams if (mDitherEnable) { 70326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams glEnable(GL_DITHER); 71326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams } else { 72326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams glDisable(GL_DITHER); 73326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams } 74326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 75326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 76326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 77326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 78326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsvoid ProgramFragmentStore::setDitherEnable(bool enable) 79326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 80326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mDitherEnable = enable; 81326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 82326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 83326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsvoid ProgramFragmentStore::setDepthFunc(RsDepthFunc func) 84326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 85326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mDepthTestEnable = true; 86326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 87326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams switch(func) { 88326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_DEPTH_FUNC_ALWAYS: 89326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mDepthTestEnable = false; 90326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mDepthFunc = GL_ALWAYS; 91326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 92326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_DEPTH_FUNC_LESS: 93326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mDepthFunc = GL_LESS; 94326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 95326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_DEPTH_FUNC_LEQUAL: 96326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mDepthFunc = GL_LEQUAL; 97326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 98326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_DEPTH_FUNC_GREATER: 99326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mDepthFunc = GL_GREATER; 100326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 101326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_DEPTH_FUNC_GEQUAL: 102326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mDepthFunc = GL_GEQUAL; 103326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 104326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_DEPTH_FUNC_EQUAL: 105326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mDepthFunc = GL_EQUAL; 106326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 107326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_DEPTH_FUNC_NOTEQUAL: 108326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mDepthFunc = GL_NOTEQUAL; 109326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 110326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams } 111326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 112326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 113326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsvoid ProgramFragmentStore::setDepthMask(bool mask) 114326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 115326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mDepthWriteEnable = mask; 116326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 117326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 118326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsvoid ProgramFragmentStore::setBlendFunc(RsBlendSrcFunc src, RsBlendDstFunc dst) 119326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 120326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendEnable = true; 121326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams if ((src == RS_BLEND_SRC_ONE) && 122326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams (dst == RS_BLEND_DST_ZERO)) { 123326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendEnable = false; 124326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams } 125326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 126326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams switch(src) { 127326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_SRC_ZERO: 128326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendSrc = GL_ZERO; 129326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 130326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_SRC_ONE: 131326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendSrc = GL_ONE; 132326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 133326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_SRC_DST_COLOR: 134326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendSrc = GL_DST_COLOR; 135326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 136326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_SRC_ONE_MINUS_DST_COLOR: 137326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendSrc = GL_ONE_MINUS_DST_COLOR; 138326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 139326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_SRC_SRC_ALPHA: 140326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendSrc = GL_SRC_ALPHA; 141326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 142326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_SRC_ONE_MINUS_SRC_ALPHA: 143326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendSrc = GL_ONE_MINUS_SRC_ALPHA; 144326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 145326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_SRC_DST_ALPHA: 146326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendSrc = GL_DST_ALPHA; 147326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 148326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_SRC_ONE_MINUS_DST_ALPHA: 149326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendSrc = GL_ONE_MINUS_DST_ALPHA; 150326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 151326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_SRC_SRC_ALPHA_SATURATE: 152326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendSrc = GL_SRC_ALPHA_SATURATE; 153326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 154326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams } 155326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 156326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams switch(dst) { 157326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_DST_ZERO: 158326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendDst = GL_ZERO; 159326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 160326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_DST_ONE: 161326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendDst = GL_ONE; 162326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 163326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_DST_SRC_COLOR: 164326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendDst = GL_SRC_COLOR; 165326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 166326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_DST_ONE_MINUS_SRC_COLOR: 167326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendDst = GL_ONE_MINUS_SRC_COLOR; 168326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 169326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_DST_SRC_ALPHA: 170326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendDst = GL_SRC_ALPHA; 171326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 172326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_DST_ONE_MINUS_SRC_ALPHA: 173326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendDst = GL_ONE_MINUS_SRC_ALPHA; 174326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 175326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_DST_DST_ALPHA: 176326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendDst = GL_DST_ALPHA; 177326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 178326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_BLEND_DST_ONE_MINUS_DST_ALPHA: 179326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mBlendDst = GL_ONE_MINUS_DST_ALPHA; 180326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 181326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams } 182326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 183326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 184326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsvoid ProgramFragmentStore::setColorMask(bool r, bool g, bool b, bool a) 185326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 186326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mColorRWriteEnable = r; 187326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mColorGWriteEnable = g; 188326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mColorBWriteEnable = b; 189326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mColorAWriteEnable = a; 190326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 191326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 192326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 193326e0ddf89e8df2837752fbfd7a014814b32082cJason SamsProgramFragmentStoreState::ProgramFragmentStoreState() 194326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 195326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mPFS = NULL; 196326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 197326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 198326e0ddf89e8df2837752fbfd7a014814b32082cJason SamsProgramFragmentStoreState::~ProgramFragmentStoreState() 199326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 200326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams delete mPFS; 201326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 202326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 203326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 204326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 205326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 206326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsnamespace android { 207326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsnamespace renderscript { 208326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 209326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsvoid rsi_ProgramFragmentStoreBegin(Context * rsc, RsElement in, RsElement out) 210326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 211326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams delete rsc->mStateFragmentStore.mPFS; 212326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams rsc->mStateFragmentStore.mPFS = new ProgramFragmentStore((Element *)in, (Element *)out); 213326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 214326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 215326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 216326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsvoid rsi_ProgramFragmentStoreDepthFunc(Context *rsc, RsDepthFunc func) 217326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 218326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams rsc->mStateFragmentStore.mPFS->setDepthFunc(func); 219326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 220326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 221326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsvoid rsi_ProgramFragmentStoreDepthMask(Context *rsc, bool mask) 222326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 223326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams rsc->mStateFragmentStore.mPFS->setDepthMask(mask); 224326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 225326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 226326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsvoid rsi_ProgramFragmentStoreColorMask(Context *rsc, bool r, bool g, bool b, bool a) 227326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 228326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams rsc->mStateFragmentStore.mPFS->setColorMask(r, g, b, a); 229326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 230326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 231326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsvoid rsi_ProgramFragmentStoreBlendFunc(Context *rsc, RsBlendSrcFunc src, RsBlendDstFunc dst) 232326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 233326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams rsc->mStateFragmentStore.mPFS->setBlendFunc(src, dst); 234326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 235326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 236326e0ddf89e8df2837752fbfd7a014814b32082cJason SamsRsProgramFragmentStore rsi_ProgramFragmentStoreCreate(Context *rsc) 237326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 238326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ProgramFragmentStore *pfs = rsc->mStateFragmentStore.mPFS; 239326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams pfs->incRef(); 240326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams rsc->mStateFragmentStore.mPFS = 0; 241326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 242326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams return pfs; 243326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 244326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 245326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsvoid rsi_ProgramFragmentStoreDither(Context *rsc, bool enable) 246326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 247326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams rsc->mStateFragmentStore.mPFS->setDitherEnable(enable); 248326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 249326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 250326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 251326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 252326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 253