| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2011 Google Inc. | 3 * Copyright 2011 Google Inc. |
| 4 * | 4 * |
| 5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
| 6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
| 7 */ | 7 */ |
| 8 | 8 |
| 9 // This is a GPU-backend specific test. It relies on static intializers to work | 9 // This is a GPU-backend specific test. It relies on static intializers to work |
| 10 | 10 |
| (...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 151 GrPrintf("\nTest Program %d\n-------------\n", t); | 151 GrPrintf("\nTest Program %d\n-------------\n", t); |
| 152 static const int stop = -1; | 152 static const int stop = -1; |
| 153 if (t == stop) { | 153 if (t == stop) { |
| 154 int breakpointhere = 9; | 154 int breakpointhere = 9; |
| 155 } | 155 } |
| 156 #endif | 156 #endif |
| 157 | 157 |
| 158 GrGLProgramDesc pdesc; | 158 GrGLProgramDesc pdesc; |
| 159 | 159 |
| 160 int currAttribIndex = 1; // we need to always leave room for position | 160 int currAttribIndex = 1; // we need to always leave room for position |
| 161 int currTextureCoordSet = 0; |
| 161 int attribIndices[2]; | 162 int attribIndices[2]; |
| 162 GrTexture* dummyTextures[] = {dummyTexture1.get(), dummyTexture2.get()}; | 163 GrTexture* dummyTextures[] = {dummyTexture1.get(), dummyTexture2.get()}; |
| 163 | 164 |
| 164 int numStages = random.nextULessThan(maxStages + 1); | 165 int numStages = random.nextULessThan(maxStages + 1); |
| 165 int numColorStages = random.nextULessThan(numStages + 1); | 166 int numColorStages = random.nextULessThan(numStages + 1); |
| 166 int numCoverageStages = numStages - numColorStages; | 167 int numCoverageStages = numStages - numColorStages; |
| 167 | 168 |
| 168 SkAutoSTMalloc<8, const GrEffectStage*> stages(numStages); | 169 SkAutoSTMalloc<8, const GrEffectStage*> stages(numStages); |
| 169 | 170 |
| 170 for (int s = 0; s < numStages; ++s) { | 171 bool useFixedFunctionTexturing = this->shouldUseFixedFunctionTexturing()
; |
| 172 |
| 173 for (int s = 0; s < numStages;) { |
| 171 SkAutoTUnref<const GrEffectRef> effect(GrEffectTestFactory::CreateSt
age( | 174 SkAutoTUnref<const GrEffectRef> effect(GrEffectTestFactory::CreateSt
age( |
| 172 &ran
dom, | 175 &ran
dom, |
| 173 this
->getContext(), | 176 this
->getContext(), |
| 174 *thi
s->caps(), | 177 *thi
s->caps(), |
| 175 dumm
yTextures)); | 178 dumm
yTextures)); |
| 176 int numAttribs = (*effect)->numVertexAttribs(); | 179 int numAttribs = (*effect)->numVertexAttribs(); |
| 177 | 180 |
| 178 // If adding this effect would exceed the max attrib count then gene
rate a | 181 // If adding this effect would exceed the max attrib count then gene
rate a |
| 179 // new random effect. | 182 // new random effect. |
| 180 if (currAttribIndex + numAttribs > GrDrawState::kMaxVertexAttribCnt)
{ | 183 if (currAttribIndex + numAttribs > GrDrawState::kMaxVertexAttribCnt)
{ |
| 181 --s; | |
| 182 continue; | 184 continue; |
| 183 } | 185 } |
| 186 |
| 187 |
| 188 // If adding this effect would exceed the max texture coord set coun
t then generate a |
| 189 // new random effect. |
| 190 if (useFixedFunctionTexturing && !(*effect)->hasVertexCode()) { |
| 191 int numTransforms = (*effect)->numTransforms(); |
| 192 if (currTextureCoordSet + numTransforms > this->glCaps().maxFixe
dFunctionTextureCoords()) { |
| 193 continue; |
| 194 } |
| 195 currTextureCoordSet += numTransforms; |
| 196 } |
| 197 |
| 198 useFixedFunctionTexturing = useFixedFunctionTexturing && !(*effect)-
>hasVertexCode(); |
| 199 |
| 184 for (int i = 0; i < numAttribs; ++i) { | 200 for (int i = 0; i < numAttribs; ++i) { |
| 185 attribIndices[i] = currAttribIndex++; | 201 attribIndices[i] = currAttribIndex++; |
| 186 } | 202 } |
| 187 GrEffectStage* stage = SkNEW_ARGS(GrEffectStage, | 203 GrEffectStage* stage = SkNEW_ARGS(GrEffectStage, |
| 188 (effect.get(), attribIndices[0], a
ttribIndices[1])); | 204 (effect.get(), attribIndices[0], a
ttribIndices[1])); |
| 189 stages[s] = stage; | 205 stages[s] = stage; |
| 206 ++s; |
| 190 } | 207 } |
| 191 const GrTexture* dstTexture = random.nextBool() ? dummyTextures[0] : dum
myTextures[1]; | 208 const GrTexture* dstTexture = random.nextBool() ? dummyTextures[0] : dum
myTextures[1]; |
| 192 pdesc.setRandom(&random, | 209 pdesc.setRandom(&random, |
| 193 this, | 210 this, |
| 194 dummyTextures[0]->asRenderTarget(), | 211 dummyTextures[0]->asRenderTarget(), |
| 195 dstTexture, | 212 dstTexture, |
| 196 stages.get(), | 213 stages.get(), |
| 197 numColorStages, | 214 numColorStages, |
| 198 numCoverageStages, | 215 numCoverageStages, |
| 199 currAttribIndex); | 216 currAttribIndex); |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 250 GrConfigConversionEffect::Create(NULL, | 267 GrConfigConversionEffect::Create(NULL, |
| 251 false, | 268 false, |
| 252 GrConfigConversionEffect::kNone_PMConversio
n, | 269 GrConfigConversionEffect::kNone_PMConversio
n, |
| 253 SkMatrix::I()); | 270 SkMatrix::I()); |
| 254 SkScalar matrix[20]; | 271 SkScalar matrix[20]; |
| 255 SkColorMatrixFilter cmf(matrix); | 272 SkColorMatrixFilter cmf(matrix); |
| 256 SkBitmapAlphaThresholdShader::Create(SkBitmap(), SkRegion(), 0x80); | 273 SkBitmapAlphaThresholdShader::Create(SkBitmap(), SkRegion(), 0x80); |
| 257 } | 274 } |
| 258 | 275 |
| 259 #endif | 276 #endif |
| OLD | NEW |