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

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

Issue 14367030: Remove GR_STATIC_RECT_VB (take 2) (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: Created 7 years, 8 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 | Annotate | Revision Log
« no previous file with comments | « include/gpu/GrUserConfig.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 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 9
10 #include "GrContext.h" 10 #include "GrContext.h"
(...skipping 835 matching lines...) Expand 10 before | Expand all | Expand 10 after
846 846
847 GrDrawState::AutoViewMatrixRestore avmr; 847 GrDrawState::AutoViewMatrixRestore avmr;
848 if (NULL != matrix) { 848 if (NULL != matrix) {
849 GrDrawState* drawState = target->drawState(); 849 GrDrawState* drawState = target->drawState();
850 avmr.set(drawState, *matrix); 850 avmr.set(drawState, *matrix);
851 } 851 }
852 852
853 target->drawNonIndexed(primType, 0, vertCount); 853 target->drawNonIndexed(primType, 0, vertCount);
854 } else { 854 } else {
855 // filled BW rect 855 // filled BW rect
856 #if GR_STATIC_RECT_VB 856 target->drawSimpleRect(rect, matrix);
857 const GrVertexBuffer* sqVB = fGpu->getUnitSquareVertexBuffer();
858 if (NULL == sqVB) {
859 GrPrintf("Failed to create static rect vb.\n");
860 return;
861 }
862
863 GrDrawState* drawState = target->drawState();
864 target->drawState()->setDefaultVertexAttribs();
865 target->setVertexSourceToBuffer(sqVB);
866 SkMatrix m;
867 m.setAll(rect.width(), 0, rect.fLeft,
868 0, rect.height(), rect.fTop,
869 0, 0, SkMatrix::I()[8]);
870
871 if (NULL != matrix) {
872 m.postConcat(*matrix);
873 }
874 GrDrawState::AutoViewMatrixRestore avmr(drawState, m);
875
876 target->drawNonIndexed(kTriangleFan_GrPrimitiveType, 0, 4);
877 #else
878 target->drawSimpleRect(rect, matrix);
879 #endif
880 } 857 }
881 } 858 }
882 859
883 void GrContext::drawRectToRect(const GrPaint& paint, 860 void GrContext::drawRectToRect(const GrPaint& paint,
884 const GrRect& dstRect, 861 const GrRect& dstRect,
885 const GrRect& localRect, 862 const GrRect& localRect,
886 const SkMatrix* dstMatrix, 863 const SkMatrix* dstMatrix,
887 const SkMatrix* localMatrix) { 864 const SkMatrix* localMatrix) {
888 SK_TRACE_EVENT0("GrContext::drawRectToRect"); 865 SK_TRACE_EVENT0("GrContext::drawRectToRect");
889 866
890 GrDrawTarget* target = this->prepareToDraw(&paint, BUFFERED_DRAW); 867 GrDrawTarget* target = this->prepareToDraw(&paint, BUFFERED_DRAW);
891 GrDrawState::AutoStageDisable atr(fDrawState); 868 GrDrawState::AutoStageDisable atr(fDrawState);
892 869
893 #if GR_STATIC_RECT_VB
894 GrDrawState* drawState = target->drawState();
895
896 SkMatrix m;
897
898 m.setAll(dstRect.width(), 0, dstRect.fLeft,
899 0, dstRect.height(), dstRect.fTop,
900 0, 0, SkMatrix::I()[8]);
901 if (NULL != dstMatrix) {
902 m.postConcat(*dstMatrix);
903 }
904
905 // This code path plays a little fast and loose with the notion of local coo rds and coord
906 // change matrices in order to account for localRect and localMatrix. The un it square VB only
907 // has one set of coords. Rather than using AutoViewMatrixRestore we instead directly set concat
908 // with m and then call GrDrawState::localCoordChange() with a matrix that a ccounts for
909 // localRect and localMatrix. This code path is preventing some encapsulatio n in GrDrawState.
910 SkMatrix savedViewMatrix = drawState->getViewMatrix();
911 drawState->preConcatViewMatrix(m);
912
913 m.setAll(localRect.width(), 0, localRect.fLeft,
914 0, localRect.height(), localRect.fTop,
915 0, 0, SkMatrix::I()[8]);
916 if (NULL != localMatrix) {
917 m.postConcat(*localMatrix);
918 }
919 drawState->localCoordChange(m);
920
921 const GrVertexBuffer* sqVB = fGpu->getUnitSquareVertexBuffer();
922 if (NULL == sqVB) {
923 GrPrintf("Failed to create static rect vb.\n");
924 return;
925 }
926 drawState->setDefaultVertexAttribs();
927 target->setVertexSourceToBuffer(sqVB);
928 target->drawNonIndexed(kTriangleFan_GrPrimitiveType, 0, 4);
929 drawState->setViewMatrix(savedViewMatrix);
930 #else
931 target->drawRect(dstRect, dstMatrix, &localRect, localMatrix); 870 target->drawRect(dstRect, dstMatrix, &localRect, localMatrix);
932 #endif
933 } 871 }
934 872
935 void GrContext::drawVertices(const GrPaint& paint, 873 void GrContext::drawVertices(const GrPaint& paint,
936 GrPrimitiveType primitiveType, 874 GrPrimitiveType primitiveType,
937 int vertexCount, 875 int vertexCount,
938 const GrPoint positions[], 876 const GrPoint positions[],
939 const GrPoint texCoords[], 877 const GrPoint texCoords[],
940 const GrColor colors[], 878 const GrColor colors[],
941 const uint16_t indices[], 879 const uint16_t indices[],
942 int indexCount) { 880 int indexCount) {
(...skipping 887 matching lines...) Expand 10 before | Expand all | Expand 10 after
1830 return srcTexture; 1768 return srcTexture;
1831 } 1769 }
1832 } 1770 }
1833 1771
1834 /////////////////////////////////////////////////////////////////////////////// 1772 ///////////////////////////////////////////////////////////////////////////////
1835 #if GR_CACHE_STATS 1773 #if GR_CACHE_STATS
1836 void GrContext::printCacheStats() const { 1774 void GrContext::printCacheStats() const {
1837 fTextureCache->printStats(); 1775 fTextureCache->printStats();
1838 } 1776 }
1839 #endif 1777 #endif
OLDNEW
« no previous file with comments | « include/gpu/GrUserConfig.h ('k') | src/gpu/GrGpu.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698