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

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

Issue 1133613004: Add unit tests for stroke rects and drawVertices (Closed) Base URL: https://skia.googlesource.com/skia.git@randbatch8
Patch Set: tidy Created 5 years, 7 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 | « include/gpu/GrTypes.h ('k') | no next file » | 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 #include "GrContext.h" 9 #include "GrContext.h"
10 10
11 #include "GrAARectRenderer.h" 11 #include "GrAARectRenderer.h"
12 #include "GrAtlasTextContext.h" 12 #include "GrAtlasTextContext.h"
13 #include "GrBatch.h" 13 #include "GrBatch.h"
14 #include "GrBatchFontCache.h" 14 #include "GrBatchFontCache.h"
15 #include "GrBatchTarget.h" 15 #include "GrBatchTarget.h"
16 #include "GrBatchTest.h"
16 #include "GrBufferAllocPool.h" 17 #include "GrBufferAllocPool.h"
17 #include "GrDefaultGeoProcFactory.h" 18 #include "GrDefaultGeoProcFactory.h"
18 #include "GrGpuResource.h" 19 #include "GrGpuResource.h"
19 #include "GrGpuResourcePriv.h" 20 #include "GrGpuResourcePriv.h"
20 #include "GrDrawTargetCaps.h" 21 #include "GrDrawTargetCaps.h"
21 #include "GrGpu.h" 22 #include "GrGpu.h"
22 #include "GrIndexBuffer.h" 23 #include "GrIndexBuffer.h"
23 #include "GrInOrderDrawBuffer.h" 24 #include "GrInOrderDrawBuffer.h"
24 #include "GrLayerCache.h" 25 #include "GrLayerCache.h"
25 #include "GrOvalRenderer.h" 26 #include "GrOvalRenderer.h"
(...skipping 1875 matching lines...) Expand 10 before | Expand all | Expand 10 after
1901 fDrawBuffer->addGpuTraceMarker(marker); 1902 fDrawBuffer->addGpuTraceMarker(marker);
1902 } 1903 }
1903 } 1904 }
1904 1905
1905 void GrContext::removeGpuTraceMarker(const GrGpuTraceMarker* marker) { 1906 void GrContext::removeGpuTraceMarker(const GrGpuTraceMarker* marker) {
1906 fGpu->removeGpuTraceMarker(marker); 1907 fGpu->removeGpuTraceMarker(marker);
1907 if (fDrawBuffer) { 1908 if (fDrawBuffer) {
1908 fDrawBuffer->removeGpuTraceMarker(marker); 1909 fDrawBuffer->removeGpuTraceMarker(marker);
1909 } 1910 }
1910 } 1911 }
1912
1913 //////////////////////////////////////////////////////////////////////////////// ///////////////////
1914
1915 #ifdef GR_TEST_UTILS
1916
1917 BATCH_TEST_DEFINE(StrokeRect) {
1918 StrokeRectBatch::Geometry geometry;
1919 geometry.fViewMatrix = GrTest::TestMatrix(random);
1920 geometry.fColor = GrRandomColor(random);
1921 geometry.fRect = GrTest::TestRect(random);
robertphillips 2015/05/08 18:32:17 A big one? 10?
1922 geometry.fStrokeWidth = random->nextBool() ? 0.0f : 1.0f;
1923
1924 return StrokeRectBatch::Create(geometry);
1925 }
1926
1927 static int seed_vertices(GrPrimitiveType type) {
robertphillips 2015/05/08 18:40:13 space between 'h' and '(' ?
1928 switch(type) {
robertphillips 2015/05/08 18:32:17 add // fall throughs ?
1929 case kTriangles_GrPrimitiveType:
1930 case kTriangleStrip_GrPrimitiveType:
1931 case kTriangleFan_GrPrimitiveType:
1932 return 3;
1933 case kPoints_GrPrimitiveType:
1934 return 1;
1935 case kLines_GrPrimitiveType:
1936 case kLineStrip_GrPrimitiveType:
1937 return 2;
1938 }
1939 SkFAIL("Incomplete switch\n");
1940 return 0;
1941 }
1942
1943 static int primitive_vertices(GrPrimitiveType type) {
1944 switch(type) {
1945 case kTriangles_GrPrimitiveType:
1946 return 3;
1947 case kLines_GrPrimitiveType:
1948 return 2;
1949 case kTriangleStrip_GrPrimitiveType:
1950 case kTriangleFan_GrPrimitiveType:
1951 case kPoints_GrPrimitiveType:
1952 case kLineStrip_GrPrimitiveType:
1953 return 1;
1954 }
1955 SkFAIL("Incomplete switch\n");
1956 return 0;
1957 }
1958
1959 static SkPoint random_point(SkRandom* random, SkScalar min, SkScalar max) {
1960 SkPoint p;
1961 p.fX = random->nextRangeScalar(min, max);
1962 p.fY = random->nextRangeScalar(min, max);
1963 return p;
1964 }
1965
robertphillips 2015/05/08 18:40:13 Actually use min & max ?
1966 static void randomize_params(int count, int maxVertex, SkScalar min, SkScalar ma x,
1967 SkRandom* random,
1968 SkTArray<SkPoint>* positions,
1969 SkTArray<SkPoint>* texCoords, bool hasTexCoords,
1970 SkTArray<GrColor>* colors, bool hasColors,
1971 SkTArray<uint16_t>* indices, bool hasIndices) {
1972 for (int v = 0; v < count; v++) {
1973 positions->push_back(random_point(random, -100.f, 100.f));
1974 if (hasTexCoords) {
1975 texCoords->push_back(random_point(random, -100.f, 100.f));
1976 }
1977 if (hasColors) {
1978 colors->push_back(GrRandomColor(random));
1979 }
1980 if (hasIndices) {
1981 indices->push_back(random->nextULessThan(maxVertex));
1982 }
1983 }
1984 }
1985
1986 BATCH_TEST_DEFINE(Vertices) {
1987 GrPrimitiveType type = GrPrimitiveType(random->nextULessThan(kLast_GrPrimiti veType + 1));
1988 int primitiveCount = random->nextRangeU(1, 100);
1989
1990 // TODO make 'sensible' indexbuffers
1991 SkTArray<SkPoint> positions;
1992 SkTArray<SkPoint> texCoords;
1993 SkTArray<GrColor> colors;
1994 SkTArray<uint16_t> indices;
1995
1996 bool hasTexCoords = random->nextBool();
1997 bool hasIndices = random->nextBool();
1998 bool hasColors = random->nextBool();
1999
2000 int vertexCount = seed_vertices(type) + (primitiveCount - 1) * primitive_ver tices(type);
2001
2002 int i = 1;
robertphillips 2015/05/08 18:40:13 Maybe kMinVertExtent, kMaxVertExtent instead of -1
2003 randomize_params(seed_vertices(type), vertexCount, -100.f, 100.f,
2004 random,
2005 &positions,
2006 &texCoords, hasTexCoords,
2007 &colors, hasColors,
2008 &indices, hasIndices);
2009
robertphillips 2015/05/08 18:32:17 I, personally, would do "for (int i = 1; ..." but
2010 for (; i < primitiveCount; i++) {
2011 randomize_params(primitive_vertices(type), vertexCount, -100.f, 100.f,
2012 random,
2013 &positions,
2014 &texCoords, hasTexCoords,
2015 &colors, hasColors,
2016 &indices, hasIndices);
2017 }
2018
2019 SkMatrix viewMatrix = GrTest::TestMatrix(random);
2020 SkRect bounds;
robertphillips 2015/05/08 18:40:13 Don't we want to assert that the bound is finite ?
2021 SkDEBUGCODE(bool result = ) !bounds.setBoundsCheck(positions.begin(), vertex Count);
2022 SkASSERT(result);
2023
2024 viewMatrix.mapRect(&bounds);
2025
2026 DrawVerticesBatch::Geometry geometry;
2027 geometry.fColor = GrRandomColor(random);
2028 return DrawVerticesBatch::Create(geometry, type, viewMatrix,
2029 positions.begin(), vertexCount,
2030 indices.begin(), hasIndices ? vertexCount : 0,
2031 colors.begin(),
2032 texCoords.begin(),
2033 bounds);
2034 }
2035
2036 #endif
OLDNEW
« no previous file with comments | « include/gpu/GrTypes.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698