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

Side by Side Diff: src/gpu/GrDrawTarget.cpp

Issue 737723003: drawinfo carries bufferinfo (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: feedback inc Created 6 years, 1 month 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/GrDrawTarget.h ('k') | src/gpu/GrGpu.h » ('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 /* 2 /*
3 * Copyright 2010 Google Inc. 3 * Copyright 2010 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 9
10 10
(...skipping 25 matching lines...) Expand all
36 if (di.fDevBounds) { 36 if (di.fDevBounds) {
37 SkASSERT(di.fDevBounds == &di.fDevBoundsStorage); 37 SkASSERT(di.fDevBounds == &di.fDevBoundsStorage);
38 fDevBoundsStorage = di.fDevBoundsStorage; 38 fDevBoundsStorage = di.fDevBoundsStorage;
39 fDevBounds = &fDevBoundsStorage; 39 fDevBounds = &fDevBoundsStorage;
40 } else { 40 } else {
41 fDevBounds = NULL; 41 fDevBounds = NULL;
42 } 42 }
43 43
44 fDstCopy = di.fDstCopy; 44 fDstCopy = di.fDstCopy;
45 45
46 this->setVertexBuffer(di.vertexBuffer());
47 this->setIndexBuffer(di.indexBuffer());
48
46 return *this; 49 return *this;
47 } 50 }
48 51
49 #ifdef SK_DEBUG 52 #ifdef SK_DEBUG
50 bool GrDrawTarget::DrawInfo::isInstanced() const { 53 bool GrDrawTarget::DrawInfo::isInstanced() const {
51 if (fInstanceCount > 0) { 54 if (fInstanceCount > 0) {
52 SkASSERT(0 == fIndexCount % fIndicesPerInstance); 55 SkASSERT(0 == fIndexCount % fIndicesPerInstance);
53 SkASSERT(0 == fVertexCount % fVerticesPerInstance); 56 SkASSERT(0 == fVertexCount % fVerticesPerInstance);
54 SkASSERT(fIndexCount / fIndicesPerInstance == fInstanceCount); 57 SkASSERT(fIndexCount / fIndicesPerInstance == fInstanceCount);
55 SkASSERT(fVertexCount / fVerticesPerInstance == fInstanceCount); 58 SkASSERT(fVertexCount / fVerticesPerInstance == fInstanceCount);
(...skipping 406 matching lines...) Expand 10 before | Expand all | Expand 10 after
462 info.fVerticesPerInstance = 0; 465 info.fVerticesPerInstance = 0;
463 info.fIndicesPerInstance = 0; 466 info.fIndicesPerInstance = 0;
464 467
465 if (devBounds) { 468 if (devBounds) {
466 info.setDevBounds(*devBounds); 469 info.setDevBounds(*devBounds);
467 } 470 }
468 // TODO: We should continue with incorrect blending. 471 // TODO: We should continue with incorrect blending.
469 if (!this->setupDstReadIfNecessary(ds, &info)) { 472 if (!this->setupDstReadIfNecessary(ds, &info)) {
470 return; 473 return;
471 } 474 }
475
476 this->setDrawBuffers(&info);
477
472 this->onDraw(*ds, info, scissorState); 478 this->onDraw(*ds, info, scissorState);
473 } 479 }
474 } 480 }
475 481
476 void GrDrawTarget::drawNonIndexed(GrDrawState* ds, 482 void GrDrawTarget::drawNonIndexed(GrDrawState* ds,
477 GrPrimitiveType type, 483 GrPrimitiveType type,
478 int startVertex, 484 int startVertex,
479 int vertexCount, 485 int vertexCount,
480 const SkRect* devBounds) { 486 const SkRect* devBounds) {
481 SkASSERT(ds); 487 SkASSERT(ds);
(...skipping 19 matching lines...) Expand all
501 info.fIndicesPerInstance = 0; 507 info.fIndicesPerInstance = 0;
502 508
503 if (devBounds) { 509 if (devBounds) {
504 info.setDevBounds(*devBounds); 510 info.setDevBounds(*devBounds);
505 } 511 }
506 512
507 // TODO: We should continue with incorrect blending. 513 // TODO: We should continue with incorrect blending.
508 if (!this->setupDstReadIfNecessary(ds, &info)) { 514 if (!this->setupDstReadIfNecessary(ds, &info)) {
509 return; 515 return;
510 } 516 }
517
518 this->setDrawBuffers(&info);
519
511 this->onDraw(*ds, info, scissorState); 520 this->onDraw(*ds, info, scissorState);
512 } 521 }
513 } 522 }
514 523
515 static const GrStencilSettings& winding_path_stencil_settings() { 524 static const GrStencilSettings& winding_path_stencil_settings() {
516 GR_STATIC_CONST_SAME_STENCIL_STRUCT(gSettings, 525 GR_STATIC_CONST_SAME_STENCIL_STRUCT(gSettings,
517 kIncClamp_StencilOp, 526 kIncClamp_StencilOp,
518 kIncClamp_StencilOp, 527 kIncClamp_StencilOp,
519 kAlwaysIfInClip_StencilFunc, 528 kAlwaysIfInClip_StencilFunc,
520 0xFFFF, 0xFFFF, 0xFFFF); 529 0xFFFF, 0xFFFF, 0xFFFF);
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after
747 info.fVerticesPerInstance = verticesPerInstance; 756 info.fVerticesPerInstance = verticesPerInstance;
748 757
749 // Set the same bounds for all the draws. 758 // Set the same bounds for all the draws.
750 if (devBounds) { 759 if (devBounds) {
751 info.setDevBounds(*devBounds); 760 info.setDevBounds(*devBounds);
752 } 761 }
753 // TODO: We should continue with incorrect blending. 762 // TODO: We should continue with incorrect blending.
754 if (!this->setupDstReadIfNecessary(ds, &info)) { 763 if (!this->setupDstReadIfNecessary(ds, &info)) {
755 return; 764 return;
756 } 765 }
766
757 while (instanceCount) { 767 while (instanceCount) {
758 info.fInstanceCount = SkTMin(instanceCount, maxInstancesPerDraw); 768 info.fInstanceCount = SkTMin(instanceCount, maxInstancesPerDraw);
759 info.fVertexCount = info.fInstanceCount * verticesPerInstance; 769 info.fVertexCount = info.fInstanceCount * verticesPerInstance;
760 info.fIndexCount = info.fInstanceCount * indicesPerInstance; 770 info.fIndexCount = info.fInstanceCount * indicesPerInstance;
761 771
772 this->setDrawBuffers(&info);
773
762 if (this->checkDraw(*ds, 774 if (this->checkDraw(*ds,
763 type, 775 type,
764 info.fStartVertex, 776 info.fStartVertex,
765 info.fStartIndex, 777 info.fStartIndex,
766 info.fVertexCount, 778 info.fVertexCount,
767 info.fIndexCount)) { 779 info.fIndexCount)) {
768 this->onDraw(*ds, info, scissorState); 780 this->onDraw(*ds, info, scissorState);
769 } 781 }
770 info.fStartVertex += info.fVertexCount; 782 info.fStartVertex += info.fVertexCount;
771 instanceCount -= info.fInstanceCount; 783 instanceCount -= info.fInstanceCount;
(...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after
1139 GrDrawState::AutoRestoreStencil* ars, 1151 GrDrawState::AutoRestoreStencil* ars,
1140 GrDrawState* ds, 1152 GrDrawState* ds,
1141 GrClipMaskManager::ScissorState* scissorState) { 1153 GrClipMaskManager::ScissorState* scissorState) {
1142 return fClipMaskManager.setupClipping(ds, 1154 return fClipMaskManager.setupClipping(ds,
1143 are, 1155 are,
1144 ars, 1156 ars,
1145 scissorState, 1157 scissorState,
1146 this->getClip(), 1158 this->getClip(),
1147 devBounds); 1159 devBounds);
1148 } 1160 }
OLDNEW
« no previous file with comments | « src/gpu/GrDrawTarget.h ('k') | src/gpu/GrGpu.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698