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

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

Issue 979343002: handle null vertex or index buffers in batch (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: cleanup Created 5 years, 9 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/GrInOrderDrawBuffer.cpp ('k') | src/gpu/GrTessellatingPathRenderer.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 2013 Google Inc. 2 * Copyright 2013 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 "GrOvalRenderer.h" 8 #include "GrOvalRenderer.h"
9 9
10 #include "GrBatch.h" 10 #include "GrBatch.h"
(...skipping 744 matching lines...) Expand 10 before | Expand all | Expand 10 after
755 SkASSERT(vertexStride == sizeof(CircleVertex)); 755 SkASSERT(vertexStride == sizeof(CircleVertex));
756 756
757 const GrVertexBuffer* vertexBuffer; 757 const GrVertexBuffer* vertexBuffer;
758 int firstVertex; 758 int firstVertex;
759 759
760 void *vertices = batchTarget->vertexPool()->makeSpace(vertexStride, 760 void *vertices = batchTarget->vertexPool()->makeSpace(vertexStride,
761 vertexCount, 761 vertexCount,
762 &vertexBuffer, 762 &vertexBuffer,
763 &firstVertex); 763 &firstVertex);
764 764
765 if (!vertices || !batchTarget->quadIndexBuffer()) {
766 SkDebugf("Could not allocate buffers\n");
767 return;
768 }
769
765 CircleVertex* verts = reinterpret_cast<CircleVertex*>(vertices); 770 CircleVertex* verts = reinterpret_cast<CircleVertex*>(vertices);
766 771
767 for (int i = 0; i < instanceCount; i++) { 772 for (int i = 0; i < instanceCount; i++) {
768 Geometry& args = fGeoData[i]; 773 Geometry& args = fGeoData[i];
769 774
770 SkScalar innerRadius = args.fInnerRadius; 775 SkScalar innerRadius = args.fInnerRadius;
771 SkScalar outerRadius = args.fOuterRadius; 776 SkScalar outerRadius = args.fOuterRadius;
772 777
773 const SkRect& bounds = args.fDevBounds; 778 const SkRect& bounds = args.fDevBounds;
774 779
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after
1005 SkASSERT(vertexStride == sizeof(EllipseVertex)); 1010 SkASSERT(vertexStride == sizeof(EllipseVertex));
1006 1011
1007 const GrVertexBuffer* vertexBuffer; 1012 const GrVertexBuffer* vertexBuffer;
1008 int firstVertex; 1013 int firstVertex;
1009 1014
1010 void *vertices = batchTarget->vertexPool()->makeSpace(vertexStride, 1015 void *vertices = batchTarget->vertexPool()->makeSpace(vertexStride,
1011 vertexCount, 1016 vertexCount,
1012 &vertexBuffer, 1017 &vertexBuffer,
1013 &firstVertex); 1018 &firstVertex);
1014 1019
1020 if (!vertices || !batchTarget->quadIndexBuffer()) {
1021 SkDebugf("Could not allocate buffers\n");
1022 return;
1023 }
1024
1015 EllipseVertex* verts = reinterpret_cast<EllipseVertex*>(vertices); 1025 EllipseVertex* verts = reinterpret_cast<EllipseVertex*>(vertices);
1016 1026
1017 for (int i = 0; i < instanceCount; i++) { 1027 for (int i = 0; i < instanceCount; i++) {
1018 Geometry& args = fGeoData[i]; 1028 Geometry& args = fGeoData[i];
1019 1029
1020 SkScalar xRadius = args.fXRadius; 1030 SkScalar xRadius = args.fXRadius;
1021 SkScalar yRadius = args.fYRadius; 1031 SkScalar yRadius = args.fYRadius;
1022 1032
1023 // Compute the reciprocals of the radii here to save time in the sha der 1033 // Compute the reciprocals of the radii here to save time in the sha der
1024 SkScalar xRadRecip = SkScalarInvert(xRadius); 1034 SkScalar xRadRecip = SkScalarInvert(xRadius);
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after
1296 SkASSERT(vertexStride == sizeof(DIEllipseVertex)); 1306 SkASSERT(vertexStride == sizeof(DIEllipseVertex));
1297 1307
1298 const GrVertexBuffer* vertexBuffer; 1308 const GrVertexBuffer* vertexBuffer;
1299 int firstVertex; 1309 int firstVertex;
1300 1310
1301 void *vertices = batchTarget->vertexPool()->makeSpace(vertexStride, 1311 void *vertices = batchTarget->vertexPool()->makeSpace(vertexStride,
1302 vertexCount, 1312 vertexCount,
1303 &vertexBuffer, 1313 &vertexBuffer,
1304 &firstVertex); 1314 &firstVertex);
1305 1315
1316 if (!vertices || !batchTarget->quadIndexBuffer()) {
1317 SkDebugf("Could not allocate buffers\n");
1318 return;
1319 }
1320
1306 DIEllipseVertex* verts = reinterpret_cast<DIEllipseVertex*>(vertices); 1321 DIEllipseVertex* verts = reinterpret_cast<DIEllipseVertex*>(vertices);
1307 1322
1308 for (int i = 0; i < instanceCount; i++) { 1323 for (int i = 0; i < instanceCount; i++) {
1309 Geometry& args = fGeoData[i]; 1324 Geometry& args = fGeoData[i];
1310 1325
1311 SkScalar xRadius = args.fXRadius; 1326 SkScalar xRadius = args.fXRadius;
1312 SkScalar yRadius = args.fYRadius; 1327 SkScalar yRadius = args.fYRadius;
1313 1328
1314 const SkRect& bounds = args.fDevBounds; 1329 const SkRect& bounds = args.fDevBounds;
1315 1330
(...skipping 369 matching lines...) Expand 10 before | Expand all | Expand 10 after
1685 SkASSERT(vertexStride == sizeof(CircleVertex)); 1700 SkASSERT(vertexStride == sizeof(CircleVertex));
1686 1701
1687 const GrVertexBuffer* vertexBuffer; 1702 const GrVertexBuffer* vertexBuffer;
1688 int firstVertex; 1703 int firstVertex;
1689 1704
1690 void *vertices = batchTarget->vertexPool()->makeSpace(vertexStride, 1705 void *vertices = batchTarget->vertexPool()->makeSpace(vertexStride,
1691 vertexCount, 1706 vertexCount,
1692 &vertexBuffer, 1707 &vertexBuffer,
1693 &firstVertex); 1708 &firstVertex);
1694 1709
1710 if (!vertices) {
1711 SkDebugf("Could not allocate vertices\n");
1712 return;
1713 }
1714
1695 CircleVertex* verts = reinterpret_cast<CircleVertex*>(vertices); 1715 CircleVertex* verts = reinterpret_cast<CircleVertex*>(vertices);
1696 1716
1697 for (int i = 0; i < instanceCount; i++) { 1717 for (int i = 0; i < instanceCount; i++) {
1698 Geometry& args = fGeoData[i]; 1718 Geometry& args = fGeoData[i];
1699 1719
1700 SkScalar outerRadius = args.fOuterRadius; 1720 SkScalar outerRadius = args.fOuterRadius;
1701 1721
1702 const SkRect& bounds = args.fDevBounds; 1722 const SkRect& bounds = args.fDevBounds;
1703 1723
1704 SkScalar yCoords[4] = { 1724 SkScalar yCoords[4] = {
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
1889 SkASSERT(vertexStride == sizeof(EllipseVertex)); 1909 SkASSERT(vertexStride == sizeof(EllipseVertex));
1890 1910
1891 const GrVertexBuffer* vertexBuffer; 1911 const GrVertexBuffer* vertexBuffer;
1892 int firstVertex; 1912 int firstVertex;
1893 1913
1894 void *vertices = batchTarget->vertexPool()->makeSpace(vertexStride, 1914 void *vertices = batchTarget->vertexPool()->makeSpace(vertexStride,
1895 vertexCount, 1915 vertexCount,
1896 &vertexBuffer, 1916 &vertexBuffer,
1897 &firstVertex); 1917 &firstVertex);
1898 1918
1919 if (!vertices) {
1920 SkDebugf("Could not allocate vertices\n");
1921 return;
1922 }
1923
1899 EllipseVertex* verts = reinterpret_cast<EllipseVertex*>(vertices); 1924 EllipseVertex* verts = reinterpret_cast<EllipseVertex*>(vertices);
1900 1925
1901 for (int i = 0; i < instanceCount; i++) { 1926 for (int i = 0; i < instanceCount; i++) {
1902 Geometry& args = fGeoData[i]; 1927 Geometry& args = fGeoData[i];
1903 1928
1904 // Compute the reciprocals of the radii here to save time in the sha der 1929 // Compute the reciprocals of the radii here to save time in the sha der
1905 SkScalar xRadRecip = SkScalarInvert(args.fXRadius); 1930 SkScalar xRadRecip = SkScalarInvert(args.fXRadius);
1906 SkScalar yRadRecip = SkScalarInvert(args.fYRadius); 1931 SkScalar yRadRecip = SkScalarInvert(args.fYRadius);
1907 SkScalar xInnerRadRecip = SkScalarInvert(args.fInnerXRadius); 1932 SkScalar xInnerRadRecip = SkScalarInvert(args.fInnerXRadius);
1908 SkScalar yInnerRadRecip = SkScalarInvert(args.fInnerYRadius); 1933 SkScalar yInnerRadRecip = SkScalarInvert(args.fInnerYRadius);
(...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after
2195 geometry.fInnerXRadius = innerXRadius; 2220 geometry.fInnerXRadius = innerXRadius;
2196 geometry.fInnerYRadius = innerYRadius; 2221 geometry.fInnerYRadius = innerYRadius;
2197 geometry.fStroke = isStrokeOnly; 2222 geometry.fStroke = isStrokeOnly;
2198 geometry.fDevBounds = bounds; 2223 geometry.fDevBounds = bounds;
2199 2224
2200 SkAutoTUnref<GrBatch> batch(RRectEllipseRendererBatch::Create(geometry, indexBuffer)); 2225 SkAutoTUnref<GrBatch> batch(RRectEllipseRendererBatch::Create(geometry, indexBuffer));
2201 target->drawBatch(pipelineBuilder, batch, &bounds); 2226 target->drawBatch(pipelineBuilder, batch, &bounds);
2202 } 2227 }
2203 return true; 2228 return true;
2204 } 2229 }
OLDNEW
« no previous file with comments | « src/gpu/GrInOrderDrawBuffer.cpp ('k') | src/gpu/GrTessellatingPathRenderer.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698