| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2011 Google Inc. | 2 * Copyright 2011 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include "GrGpuGL.h" | 8 #include "GrGpuGL.h" |
| 9 | 9 |
| 10 #include "GrProcessor.h" | 10 #include "GrProcessor.h" |
| (...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 209 | 209 |
| 210 // GrGpu::setupClipAndFlushState should have already checked this and bailed
if not true. | 210 // GrGpu::setupClipAndFlushState should have already checked this and bailed
if not true. |
| 211 SkASSERT(optState->getRenderTarget()); | 211 SkASSERT(optState->getRenderTarget()); |
| 212 | 212 |
| 213 if (kStencilPath_DrawType == type) { | 213 if (kStencilPath_DrawType == type) { |
| 214 const GrRenderTarget* rt = optState->getRenderTarget(); | 214 const GrRenderTarget* rt = optState->getRenderTarget(); |
| 215 SkISize size; | 215 SkISize size; |
| 216 size.set(rt->width(), rt->height()); | 216 size.set(rt->width(), rt->height()); |
| 217 this->glPathRendering()->setProjectionMatrix(optState->getViewMatrix(),
size, rt->origin()); | 217 this->glPathRendering()->setProjectionMatrix(optState->getViewMatrix(),
size, rt->origin()); |
| 218 } else { | 218 } else { |
| 219 this->flushMiscFixedFunctionState(); | 219 this->flushMiscFixedFunctionState(*optState.get()); |
| 220 | 220 |
| 221 GrBlendCoeff srcCoeff = optState->getSrcBlendCoeff(); | 221 GrBlendCoeff srcCoeff = optState->getSrcBlendCoeff(); |
| 222 GrBlendCoeff dstCoeff = optState->getDstBlendCoeff(); | 222 GrBlendCoeff dstCoeff = optState->getDstBlendCoeff(); |
| 223 | 223 |
| 224 // In these blend coeff's we end up drawing nothing so we can skip draw
all together | 224 // In these blend coeff's we end up drawing nothing so we can skip draw
all together |
| 225 if (kZero_GrBlendCoeff == srcCoeff && kOne_GrBlendCoeff == dstCoeff && | 225 if (kZero_GrBlendCoeff == srcCoeff && kOne_GrBlendCoeff == dstCoeff && |
| 226 !optState->getStencil().doesWrite()) { | 226 !optState->getStencil().doesWrite()) { |
| 227 return false; | 227 return false; |
| 228 } | 228 } |
| 229 | 229 |
| (...skipping 25 matching lines...) Expand all Loading... |
| 255 } | 255 } |
| 256 | 256 |
| 257 fCurrentProgram.get()->ref(); | 257 fCurrentProgram.get()->ref(); |
| 258 | 258 |
| 259 GrGLuint programID = fCurrentProgram->programID(); | 259 GrGLuint programID = fCurrentProgram->programID(); |
| 260 if (fHWProgramID != programID) { | 260 if (fHWProgramID != programID) { |
| 261 GL_CALL(UseProgram(programID)); | 261 GL_CALL(UseProgram(programID)); |
| 262 fHWProgramID = programID; | 262 fHWProgramID = programID; |
| 263 } | 263 } |
| 264 | 264 |
| 265 this->flushBlend(kDrawLines_DrawType == type, srcCoeff, dstCoeff); | 265 this->flushBlend(*optState.get(), kDrawLines_DrawType == type, srcCoeff,
dstCoeff); |
| 266 | 266 |
| 267 fCurrentProgram->setData(*optState.get(), | 267 fCurrentProgram->setData(*optState.get(), |
| 268 type, | 268 type, |
| 269 geometryProcessor, | 269 geometryProcessor, |
| 270 colorStages.begin(), | 270 colorStages.begin(), |
| 271 coverageStages.begin(), | 271 coverageStages.begin(), |
| 272 dstCopy, | 272 dstCopy, |
| 273 &fSharedGLProgramState); | 273 &fSharedGLProgramState); |
| 274 } | 274 } |
| 275 | 275 |
| 276 GrGLRenderTarget* glRT = static_cast<GrGLRenderTarget*>(optState->getRenderT
arget()); | 276 GrGLRenderTarget* glRT = static_cast<GrGLRenderTarget*>(optState->getRenderT
arget()); |
| 277 this->flushStencil(type); | 277 this->flushStencil(type); |
| 278 this->flushScissor(glRT->getViewport(), glRT->origin()); | 278 this->flushScissor(glRT->getViewport(), glRT->origin()); |
| 279 this->flushAAState(type); | 279 this->flushAAState(*optState.get(), type); |
| 280 | 280 |
| 281 SkIRect* devRect = NULL; | 281 SkIRect* devRect = NULL; |
| 282 SkIRect devClipBounds; | 282 SkIRect devClipBounds; |
| 283 if (optState->isClipState()) { | 283 if (optState->isClipState()) { |
| 284 this->getClip()->getConservativeBounds(optState->getRenderTarget(), &dev
ClipBounds); | 284 this->getClip()->getConservativeBounds(optState->getRenderTarget(), &dev
ClipBounds); |
| 285 devRect = &devClipBounds; | 285 devRect = &devClipBounds; |
| 286 } | 286 } |
| 287 // This must come after textures are flushed because a texture may need | 287 // This must come after textures are flushed because a texture may need |
| 288 // to be msaa-resolved (which will modify bound FBO state). | 288 // to be msaa-resolved (which will modify bound FBO state). |
| 289 this->flushRenderTarget(glRT, devRect); | 289 this->flushRenderTarget(glRT, devRect); |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 362 GrGLAttribTypeToLayout(attribType).fCount, | 362 GrGLAttribTypeToLayout(attribType).fCount, |
| 363 GrGLAttribTypeToLayout(attribType).fType, | 363 GrGLAttribTypeToLayout(attribType).fType, |
| 364 GrGLAttribTypeToLayout(attribType).fNormalized, | 364 GrGLAttribTypeToLayout(attribType).fNormalized, |
| 365 stride, | 365 stride, |
| 366 reinterpret_cast<GrGLvoid*>( | 366 reinterpret_cast<GrGLvoid*>( |
| 367 vertexOffsetInBytes + vertexAttrib->fOffset)); | 367 vertexOffsetInBytes + vertexAttrib->fOffset)); |
| 368 } | 368 } |
| 369 attribState->disableUnusedArrays(this, usedAttribArraysMask); | 369 attribState->disableUnusedArrays(this, usedAttribArraysMask); |
| 370 } | 370 } |
| 371 } | 371 } |
| OLD | NEW |