Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(224)

Side by Side Diff: src/gpu/gl/GrGpuGL_program.cpp

Issue 554833002: Calculate Primary and Secondary output types in the GrOptDrawState (Closed) Base URL: https://skia.googlesource.com/skia.git@optReadDst
Patch Set: Rebase Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/gpu/gl/GrGLProgramDesc.cpp ('k') | src/gpu/gl/builders/GrGLFragmentShaderBuilder.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "GrEffect.h" 10 #include "GrEffect.h"
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 } 198 }
199 ++fCurrLRUStamp; 199 ++fCurrLRUStamp;
200 return entry->fProgram; 200 return entry->fProgram;
201 } 201 }
202 202
203 //////////////////////////////////////////////////////////////////////////////// 203 ////////////////////////////////////////////////////////////////////////////////
204 204
205 #define GL_CALL(X) GR_GL_CALL(this->glInterface(), X) 205 #define GL_CALL(X) GR_GL_CALL(this->glInterface(), X)
206 206
207 bool GrGpuGL::flushGraphicsState(DrawType type, const GrDeviceCoordTexture* dstC opy) { 207 bool GrGpuGL::flushGraphicsState(DrawType type, const GrDeviceCoordTexture* dstC opy) {
208 SkAutoTUnref<GrOptDrawState> optState(this->getDrawState().createOptState()) ; 208 SkAutoTUnref<GrOptDrawState> optState(this->getDrawState().createOptState(*t his->caps()));
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 {
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
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 fCurrentProgram->overrideBlend(&srcCoeff, &dstCoeff);
266 this->flushBlend(kDrawLines_DrawType == type, srcCoeff, dstCoeff); 265 this->flushBlend(kDrawLines_DrawType == type, srcCoeff, dstCoeff);
267 266
268 fCurrentProgram->setData(*optState.get(), 267 fCurrentProgram->setData(*optState.get(),
269 type, 268 type,
270 geometryProcessor, 269 geometryProcessor,
271 colorStages.begin(), 270 colorStages.begin(),
272 coverageStages.begin(), 271 coverageStages.begin(),
273 dstCopy, 272 dstCopy,
274 &fSharedGLProgramState); 273 &fSharedGLProgramState);
275 } 274 }
(...skipping 10 matching lines...) Expand all
286 devRect = &devClipBounds; 285 devRect = &devClipBounds;
287 } 286 }
288 // 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
289 // to be msaa-resolved (which will modify bound FBO state). 288 // to be msaa-resolved (which will modify bound FBO state).
290 this->flushRenderTarget(glRT, devRect); 289 this->flushRenderTarget(glRT, devRect);
291 290
292 return true; 291 return true;
293 } 292 }
294 293
295 void GrGpuGL::setupGeometry(const DrawInfo& info, size_t* indexOffsetInBytes) { 294 void GrGpuGL::setupGeometry(const DrawInfo& info, size_t* indexOffsetInBytes) {
296 SkAutoTUnref<GrOptDrawState> optState(this->getDrawState().createOptState()) ; 295 SkAutoTUnref<GrOptDrawState> optState(this->getDrawState().createOptState(*t his->caps()));
297 296
298 GrGLsizei stride = static_cast<GrGLsizei>(optState->getVertexStride()); 297 GrGLsizei stride = static_cast<GrGLsizei>(optState->getVertexStride());
299 298
300 size_t vertexOffsetInBytes = stride * info.startVertex(); 299 size_t vertexOffsetInBytes = stride * info.startVertex();
301 300
302 const GeometryPoolState& geoPoolState = this->getGeomPoolState(); 301 const GeometryPoolState& geoPoolState = this->getGeomPoolState();
303 302
304 GrGLVertexBuffer* vbuf; 303 GrGLVertexBuffer* vbuf;
305 switch (this->getGeomSrc().fVertexSrc) { 304 switch (this->getGeomSrc().fVertexSrc) {
306 case kBuffer_GeometrySrcType: 305 case kBuffer_GeometrySrcType:
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
363 GrGLAttribTypeToLayout(attribType).fCount, 362 GrGLAttribTypeToLayout(attribType).fCount,
364 GrGLAttribTypeToLayout(attribType).fType, 363 GrGLAttribTypeToLayout(attribType).fType,
365 GrGLAttribTypeToLayout(attribType).fNormalized, 364 GrGLAttribTypeToLayout(attribType).fNormalized,
366 stride, 365 stride,
367 reinterpret_cast<GrGLvoid*>( 366 reinterpret_cast<GrGLvoid*>(
368 vertexOffsetInBytes + vertexAttrib->fOffset)); 367 vertexOffsetInBytes + vertexAttrib->fOffset));
369 } 368 }
370 attribState->disableUnusedArrays(this, usedAttribArraysMask); 369 attribState->disableUnusedArrays(this, usedAttribArraysMask);
371 } 370 }
372 } 371 }
OLDNEW
« no previous file with comments | « src/gpu/gl/GrGLProgramDesc.cpp ('k') | src/gpu/gl/builders/GrGLFragmentShaderBuilder.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698