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