diff options
author | Ravi Mistry <rmistry@google.com> | 2017-06-13 14:45:23 +0000 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-06-13 14:45:32 +0000 |
commit | 7cd974fc7d7d1c197f961136775e188468f02ec9 (patch) | |
tree | 48eff63b1d2326320d6b62b01b8409925908d896 | |
parent | a611be86f044ae2d17ca5acc12895b53ca067d79 (diff) |
Revert "Add GrPrimitiveType::kLinesAdjacency"
This reverts commit f7eb015083aba8942031145736251dd32094115d.
Reason for revert: Looks like this is causing build failures:
* https://chromium-swarm.appspot.com/task?id=36baaf4d376bbf10&refresh=10
* https://chromium-swarm.appspot.com/task?id=36baad1f17e93510&refresh=10
Original change's description:
> Add GrPrimitiveType::kLinesAdjacency
>
> Converts GrPrimitiveType to an enum class and adds kLinesAdjacency.
>
> Bug: skia:
> Change-Id: If57d26277182aac1375e8181211ddaf7ea6d1e0a
> Reviewed-on: https://skia-review.googlesource.com/19581
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Chris Dalton <csmartdalton@google.com>
TBR=bsalomon@google.com,csmartdalton@google.com
Change-Id: I37a1c575123b357abd8b9af9eea8871fe199f44b
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:
Reviewed-on: https://skia-review.googlesource.com/19661
Reviewed-by: Ravi Mistry <rmistry@google.com>
Commit-Queue: Ravi Mistry <rmistry@google.com>
31 files changed, 100 insertions, 136 deletions
diff --git a/include/gpu/GrTypes.h b/include/gpu/GrTypes.h index a4988c8a1a..bad6aa773c 100644 --- a/include/gpu/GrTypes.h +++ b/include/gpu/GrTypes.h @@ -216,27 +216,24 @@ static inline GrAA GrBoolToAA(bool aa) { return aa ? GrAA::kYes : GrAA::kNo; } /** * Geometric primitives used for drawing. */ -enum class GrPrimitiveType { - kTriangles, - kTriangleStrip, - kTriangleFan, - kPoints, - kLines, // 1 pix wide only - kLineStrip, // 1 pix wide only - kLinesAdjacency // requires geometry shader support. +enum GrPrimitiveType { + kTriangles_GrPrimitiveType, + kTriangleStrip_GrPrimitiveType, + kTriangleFan_GrPrimitiveType, + kPoints_GrPrimitiveType, + kLines_GrPrimitiveType, // 1 pix wide only + kLineStrip_GrPrimitiveType, // 1 pix wide only + kLast_GrPrimitiveType = kLineStrip_GrPrimitiveType }; -static constexpr int kNumGrPrimitiveTypes = (int) GrPrimitiveType::kLinesAdjacency + 1; static inline bool GrIsPrimTypeLines(GrPrimitiveType type) { - return GrPrimitiveType::kLines == type || - GrPrimitiveType::kLineStrip == type || - GrPrimitiveType::kLinesAdjacency == type; + return kLines_GrPrimitiveType == type || kLineStrip_GrPrimitiveType == type; } static inline bool GrIsPrimTypeTris(GrPrimitiveType type) { - return GrPrimitiveType::kTriangles == type || - GrPrimitiveType::kTriangleStrip == type || - GrPrimitiveType::kTriangleFan == type; + return kTriangles_GrPrimitiveType == type || + kTriangleStrip_GrPrimitiveType == type || + kTriangleFan_GrPrimitiveType == type; } /** diff --git a/src/gpu/GrGpuCommandBuffer.cpp b/src/gpu/GrGpuCommandBuffer.cpp index d9a2fa880b..9659ca3b9a 100644 --- a/src/gpu/GrGpuCommandBuffer.cpp +++ b/src/gpu/GrGpuCommandBuffer.cpp @@ -45,8 +45,6 @@ bool GrGpuCommandBuffer::draw(const GrPipeline& pipeline, #ifdef SK_DEBUG SkASSERT(!primProc.hasInstanceAttribs() || this->gpu()->caps()->instanceAttribSupport()); for (int i = 0; i < meshCount; ++i) { - SkASSERT(GrPrimitiveType::kLinesAdjacency != meshes[i].primitiveType() || - this->gpu()->caps()->shaderCaps()->geometryShaderSupport()); SkASSERT(primProc.hasVertexAttribs() == meshes[i].hasVertexData()); SkASSERT(primProc.hasInstanceAttribs() == meshes[i].isInstanced()); } diff --git a/src/gpu/GrResourceProvider.h b/src/gpu/GrResourceProvider.h index 52d444a104..2e9b8a824d 100644 --- a/src/gpu/GrResourceProvider.h +++ b/src/gpu/GrResourceProvider.h @@ -132,7 +132,7 @@ public: * Returns an index buffer that can be used to render quads. * Six indices per quad: 0, 1, 2, 0, 2, 3, etc. * The max number of quads is the buffer's index capacity divided by 6. - * Draw with GrPrimitiveType::kTriangles + * Draw with kTriangles_GrPrimitiveType * @ return the quad index buffer */ const GrBuffer* refQuadIndexBuffer() { diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp index 09467a1809..28cb5f8c53 100644 --- a/src/gpu/SkGpuDevice.cpp +++ b/src/gpu/SkGpuDevice.cpp @@ -291,9 +291,9 @@ void SkGpuDevice::drawPaint(const SkPaint& paint) { // must be in SkCanvas::PointMode order static const GrPrimitiveType gPointMode2PrimitiveType[] = { - GrPrimitiveType::kPoints, - GrPrimitiveType::kLines, - GrPrimitiveType::kLineStrip + kPoints_GrPrimitiveType, + kLines_GrPrimitiveType, + kLineStrip_GrPrimitiveType }; void SkGpuDevice::drawPoints(SkCanvas::PointMode mode, @@ -346,7 +346,7 @@ void SkGpuDevice::drawPoints(SkCanvas::PointMode mode, // This offsetting in device space matches the expectations of the Android framework for non-AA // points and lines. SkMatrix tempMatrix; - if (GrIsPrimTypeLines(primitiveType) || GrPrimitiveType::kPoints == primitiveType) { + if (GrIsPrimTypeLines(primitiveType) || kPoints_GrPrimitiveType == primitiveType) { tempMatrix = *viewMatrix; static const SkScalar kOffset = 0.063f; // Just greater than 1/16. tempMatrix.postTranslate(kOffset, kOffset); @@ -1597,7 +1597,7 @@ void SkGpuDevice::wireframeVertices(SkVertices::VertexMode vmode, int vertexCoun i += 6; } - GrPrimitiveType primitiveType = GrPrimitiveType::kLines; + GrPrimitiveType primitiveType = kLines_GrPrimitiveType; fRenderTargetContext->drawVertices(this->clip(), std::move(grPaint), this->ctm(), diff --git a/src/gpu/SkGr.h b/src/gpu/SkGr.h index 090a384b4a..7232c801d9 100644 --- a/src/gpu/SkGr.h +++ b/src/gpu/SkGr.h @@ -165,14 +165,14 @@ GrSamplerParams::FilterMode GrSkFilterQualityToGrFilterMode(SkFilterQuality pain static inline GrPrimitiveType SkVertexModeToGrPrimitiveType(SkVertices::VertexMode mode) { switch (mode) { case SkVertices::kTriangles_VertexMode: - return GrPrimitiveType::kTriangles; + return kTriangles_GrPrimitiveType; case SkVertices::kTriangleStrip_VertexMode: - return GrPrimitiveType::kTriangleStrip; + return kTriangleStrip_GrPrimitiveType; case SkVertices::kTriangleFan_VertexMode: - return GrPrimitiveType::kTriangleFan; + return kTriangleFan_GrPrimitiveType; } SkFAIL("Invalid mode"); - return GrPrimitiveType::kPoints; + return kPoints_GrPrimitiveType; } ////////////////////////////////////////////////////////////////////////////// diff --git a/src/gpu/gl/GrGLDefines.h b/src/gpu/gl/GrGLDefines.h index a986ce80c3..f3c5f5c99a 100644 --- a/src/gpu/gl/GrGLDefines.h +++ b/src/gpu/gl/GrGLDefines.h @@ -1062,9 +1062,6 @@ #define GR_GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001 #define GR_GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFFull -/* GL_EXT_geometry_shader */ -#define GR_GL_LINES_ADJACENCY 0x000A - /* EGL Defines */ #define GR_EGL_NO_DISPLAY ((GrEGLDisplay)0) #define GR_EGL_EXTENSIONS 0x3055 diff --git a/src/gpu/gl/GrGLGpu.cpp b/src/gpu/gl/GrGLGpu.cpp index a3fba0a706..d7a1f96462 100644 --- a/src/gpu/gl/GrGLGpu.cpp +++ b/src/gpu/gl/GrGLGpu.cpp @@ -2426,6 +2426,15 @@ void GrGLGpu::flushViewport(const GrGLIRect& viewport) { } } +GrGLenum gPrimitiveType2GLMode[] = { + GR_GL_TRIANGLES, + GR_GL_TRIANGLE_STRIP, + GR_GL_TRIANGLE_FAN, + GR_GL_POINTS, + GR_GL_LINES, + GR_GL_LINE_STRIP +}; + #define SWAP_PER_DRAW 0 #if SWAP_PER_DRAW @@ -2457,7 +2466,7 @@ void GrGLGpu::draw(const GrPipeline& pipeline, bool hasPoints = false; for (int i = 0; i < meshCount; ++i) { - if (meshes[i].primitiveType() == GrPrimitiveType::kPoints) { + if (meshes[i].primitiveType() == kPoints_GrPrimitiveType) { hasPoints = true; break; } @@ -2502,30 +2511,9 @@ void GrGLGpu::draw(const GrPipeline& pipeline, #endif } -static GrGLenum gr_primitive_type_to_gl_mode(GrPrimitiveType primitiveType) { - switch (primitiveType) { - case GrPrimitiveType::kTriangles: - return GR_GL_TRIANGLES; - case GrPrimitiveType::kTriangleStrip: - return GR_GL_TRIANGLE_STRIP; - case GrPrimitiveType::kTriangleFan: - return GR_GL_TRIANGLE_FAN; - case GrPrimitiveType::kPoints: - return GR_GL_POINTS; - case GrPrimitiveType::kLines: - return GR_GL_LINES; - case GrPrimitiveType::kLineStrip: - return GR_GL_LINE_STRIP; - case GrPrimitiveType::kLinesAdjacency: - return GR_GL_LINES_ADJACENCY; - } - SkFAIL("invalid GrPrimitiveType"); - return GR_GL_TRIANGLES; -} - void GrGLGpu::sendMeshToGpu(const GrPrimitiveProcessor& primProc, GrPrimitiveType primitiveType, const GrBuffer* vertexBuffer, int vertexCount, int baseVertex) { - const GrGLenum glPrimType = gr_primitive_type_to_gl_mode(primitiveType); + const GrGLenum glPrimType = gPrimitiveType2GLMode[primitiveType]; if (this->glCaps().drawArraysBaseVertexIsBroken()) { this->setupGeometry(primProc, nullptr, vertexBuffer, baseVertex, nullptr, 0); GL_CALL(DrawArrays(glPrimType, 0, vertexCount)); @@ -2541,7 +2529,7 @@ void GrGLGpu::sendIndexedMeshToGpu(const GrPrimitiveProcessor& primProc, int indexCount, int baseIndex, uint16_t minIndexValue, uint16_t maxIndexValue, const GrBuffer* vertexBuffer, int baseVertex) { - const GrGLenum glPrimType = gr_primitive_type_to_gl_mode(primitiveType); + const GrGLenum glPrimType = gPrimitiveType2GLMode[primitiveType]; GrGLvoid* const indices = reinterpret_cast<void*>(indexBuffer->baseOffset() + sizeof(uint16_t) * baseIndex); @@ -2561,7 +2549,7 @@ void GrGLGpu::sendInstancedMeshToGpu(const GrPrimitiveProcessor& primProc, GrPri int vertexCount, int baseVertex, const GrBuffer* instanceBuffer, int instanceCount, int baseInstance) { - const GrGLenum glPrimType = gr_primitive_type_to_gl_mode(primitiveType); + const GrGLenum glPrimType = gPrimitiveType2GLMode[primitiveType]; this->setupGeometry(primProc, nullptr, vertexBuffer, 0, instanceBuffer, baseInstance); GL_CALL(DrawArraysInstanced(glPrimType, baseVertex, vertexCount, instanceCount)); fStats.incNumDraws(); @@ -2573,7 +2561,7 @@ void GrGLGpu::sendIndexedInstancedMeshToGpu(const GrPrimitiveProcessor& primProc int baseIndex, const GrBuffer* vertexBuffer, int baseVertex, const GrBuffer* instanceBuffer, int instanceCount, int baseInstance) { - const GrGLenum glPrimType = gr_primitive_type_to_gl_mode(primitiveType); + const GrGLenum glPrimType = gPrimitiveType2GLMode[primitiveType]; GrGLvoid* indices = reinterpret_cast<void*>(indexBuffer->baseOffset() + sizeof(uint16_t) * baseIndex); this->setupGeometry(primProc, indexBuffer, vertexBuffer, baseVertex, diff --git a/src/gpu/ops/GrAAConvexPathRenderer.cpp b/src/gpu/ops/GrAAConvexPathRenderer.cpp index 9125300e21..cd69c6acd4 100644 --- a/src/gpu/ops/GrAAConvexPathRenderer.cpp +++ b/src/gpu/ops/GrAAConvexPathRenderer.cpp @@ -812,7 +812,7 @@ private: extract_verts(tess, verts, vertexStride, fColor, idxs, canTweakAlphaForCoverage); - GrMesh mesh(GrPrimitiveType::kTriangles); + GrMesh mesh(kTriangles_GrPrimitiveType); mesh.setIndexed(indexBuffer, tess.numIndices(), firstIndex, 0, tess.numPts() - 1); mesh.setVertexData(vertexBuffer, firstVertex); target->draw(gp.get(), this->pipeline(), mesh); @@ -897,7 +897,7 @@ private: SkSTArray<kPreallocDrawCnt, Draw, true> draws; create_vertices(segments, fanPt, &draws, verts, idxs); - GrMesh mesh(GrPrimitiveType::kTriangles); + GrMesh mesh(kTriangles_GrPrimitiveType); for (int j = 0; j < draws.count(); ++j) { const Draw& draw = draws[j]; diff --git a/src/gpu/ops/GrAAFillRectOp.cpp b/src/gpu/ops/GrAAFillRectOp.cpp index af5885c34f..364c2218e4 100644 --- a/src/gpu/ops/GrAAFillRectOp.cpp +++ b/src/gpu/ops/GrAAFillRectOp.cpp @@ -231,7 +231,7 @@ private: size_t vertexStride = gp->getVertexStride(); sk_sp<const GrBuffer> indexBuffer(get_index_buffer(target->resourceProvider())); - PatternHelper helper(GrPrimitiveType::kTriangles); + PatternHelper helper(kTriangles_GrPrimitiveType); void* vertices = helper.init(target, vertexStride, indexBuffer.get(), kVertsPerAAFillRect, kIndicesPerAAFillRect, fRectCnt); diff --git a/src/gpu/ops/GrAAHairLinePathRenderer.cpp b/src/gpu/ops/GrAAHairLinePathRenderer.cpp index 4d4b74f89b..26d58f4a95 100644 --- a/src/gpu/ops/GrAAHairLinePathRenderer.cpp +++ b/src/gpu/ops/GrAAHairLinePathRenderer.cpp @@ -860,7 +860,7 @@ void AAHairlineOp::onPrepareDraws(Target* target) const { add_line(&lines[2*i], toSrc, this->coverage(), &verts); } - GrMesh mesh(GrPrimitiveType::kTriangles); + GrMesh mesh(kTriangles_GrPrimitiveType); mesh.setIndexedPatterned(linesIndexBuffer.get(), kIdxsPerLineSeg, kLineSegNumVertices, lineCount, kLineSegsNumInIdxBuffer); mesh.setVertexData(vertexBuffer, firstVertex); @@ -917,7 +917,7 @@ void AAHairlineOp::onPrepareDraws(Target* target) const { } if (quadCount > 0) { - GrMesh mesh(GrPrimitiveType::kTriangles); + GrMesh mesh(kTriangles_GrPrimitiveType); mesh.setIndexedPatterned(quadsIndexBuffer.get(), kIdxsPerQuad, kQuadNumVertices, quadCount, kQuadsNumInIdxBuffer); mesh.setVertexData(vertexBuffer, firstVertex); @@ -926,7 +926,7 @@ void AAHairlineOp::onPrepareDraws(Target* target) const { } if (conicCount > 0) { - GrMesh mesh(GrPrimitiveType::kTriangles); + GrMesh mesh(kTriangles_GrPrimitiveType); mesh.setIndexedPatterned(quadsIndexBuffer.get(), kIdxsPerQuad, kQuadNumVertices, conicCount, kQuadsNumInIdxBuffer); mesh.setVertexData(vertexBuffer, firstVertex); diff --git a/src/gpu/ops/GrAALinearizingConvexPathRenderer.cpp b/src/gpu/ops/GrAALinearizingConvexPathRenderer.cpp index 9df9d678ec..5cfe5cbfed 100644 --- a/src/gpu/ops/GrAALinearizingConvexPathRenderer.cpp +++ b/src/gpu/ops/GrAALinearizingConvexPathRenderer.cpp @@ -190,7 +190,7 @@ private: return; } const GrBuffer* vertexBuffer; - GrMesh mesh(GrPrimitiveType::kTriangles); + GrMesh mesh(kTriangles_GrPrimitiveType); int firstVertex; void* verts = target->makeVertexSpace(vertexStride, vertexCount, &vertexBuffer, &firstVertex); diff --git a/src/gpu/ops/GrAAStrokeRectOp.cpp b/src/gpu/ops/GrAAStrokeRectOp.cpp index 7af6c3e58e..7ec8b86aa8 100644 --- a/src/gpu/ops/GrAAStrokeRectOp.cpp +++ b/src/gpu/ops/GrAAStrokeRectOp.cpp @@ -262,7 +262,7 @@ void AAStrokeRectOp::onPrepareDraws(Target* target) const { const sk_sp<const GrBuffer> indexBuffer( GetIndexBuffer(target->resourceProvider(), this->miterStroke())); - PatternHelper helper(GrPrimitiveType::kTriangles); + PatternHelper helper(kTriangles_GrPrimitiveType); void* vertices = helper.init(target, vertexStride, indexBuffer.get(), verticesPerInstance, indicesPerInstance, instanceCount); diff --git a/src/gpu/ops/GrAtlasTextOp.cpp b/src/gpu/ops/GrAtlasTextOp.cpp index c854a8b54d..2f2def662a 100644 --- a/src/gpu/ops/GrAtlasTextOp.cpp +++ b/src/gpu/ops/GrAtlasTextOp.cpp @@ -139,7 +139,7 @@ void GrAtlasTextOp::onPrepareDraws(Target* target) const { } void GrAtlasTextOp::flush(GrLegacyMeshDrawOp::Target* target, FlushInfo* flushInfo) const { - GrMesh mesh(GrPrimitiveType::kTriangles); + GrMesh mesh(kTriangles_GrPrimitiveType); int maxGlyphsPerDraw = static_cast<int>(flushInfo->fIndexBuffer->gpuMemorySize() / sizeof(uint16_t) / 6); mesh.setIndexedPatterned(flushInfo->fIndexBuffer.get(), kIndicesPerGlyph, kVerticesPerGlyph, diff --git a/src/gpu/ops/GrDefaultPathRenderer.cpp b/src/gpu/ops/GrDefaultPathRenderer.cpp index bc5702b393..c282036971 100644 --- a/src/gpu/ops/GrDefaultPathRenderer.cpp +++ b/src/gpu/ops/GrDefaultPathRenderer.cpp @@ -184,16 +184,16 @@ private: if (this->isHairline()) { if (isIndexed) { maxIndices = 2 * maxVertices; - primitiveType = GrPrimitiveType::kLines; + primitiveType = kLines_GrPrimitiveType; } else { - primitiveType = GrPrimitiveType::kLineStrip; + primitiveType = kLineStrip_GrPrimitiveType; } } else { if (isIndexed) { maxIndices = 3 * maxVertices; - primitiveType = GrPrimitiveType::kTriangles; + primitiveType = kTriangles_GrPrimitiveType; } else { - primitiveType = GrPrimitiveType::kTriangleFan; + primitiveType = kTriangleFan_GrPrimitiveType; } } diff --git a/src/gpu/ops/GrDrawVerticesOp.cpp b/src/gpu/ops/GrDrawVerticesOp.cpp index ecc75a7f4b..a83b3e07b9 100644 --- a/src/gpu/ops/GrDrawVerticesOp.cpp +++ b/src/gpu/ops/GrDrawVerticesOp.cpp @@ -58,7 +58,7 @@ GrDrawVerticesOp::GrDrawVerticesOp(sk_sp<SkVertices> vertices, GrPrimitiveType p } IsZeroArea zeroArea; - if (GrIsPrimTypeLines(primitiveType) || GrPrimitiveType::kPoints == primitiveType) { + if (GrIsPrimTypeLines(primitiveType) || kPoints_GrPrimitiveType == primitiveType) { zeroArea = IsZeroArea::kYes; } else { zeroArea = IsZeroArea::kNo; @@ -300,17 +300,15 @@ bool GrDrawVerticesOp::onCombineIfPossible(GrOp* t, const GrCaps& caps) { static uint32_t seed_vertices(GrPrimitiveType type) { switch (type) { - case GrPrimitiveType::kTriangles: - case GrPrimitiveType::kTriangleStrip: - case GrPrimitiveType::kTriangleFan: + case kTriangles_GrPrimitiveType: + case kTriangleStrip_GrPrimitiveType: + case kTriangleFan_GrPrimitiveType: return 3; - case GrPrimitiveType::kPoints: + case kPoints_GrPrimitiveType: return 1; - case GrPrimitiveType::kLines: - case GrPrimitiveType::kLineStrip: + case kLines_GrPrimitiveType: + case kLineStrip_GrPrimitiveType: return 2; - case GrPrimitiveType::kLinesAdjacency: - return 4; } SkFAIL("Incomplete switch\n"); return 0; @@ -318,17 +316,15 @@ static uint32_t seed_vertices(GrPrimitiveType type) { static uint32_t primitive_vertices(GrPrimitiveType type) { switch (type) { - case GrPrimitiveType::kTriangles: + case kTriangles_GrPrimitiveType: return 3; - case GrPrimitiveType::kLines: + case kLines_GrPrimitiveType: return 2; - case GrPrimitiveType::kTriangleStrip: - case GrPrimitiveType::kTriangleFan: - case GrPrimitiveType::kPoints: - case GrPrimitiveType::kLineStrip: + case kTriangleStrip_GrPrimitiveType: + case kTriangleFan_GrPrimitiveType: + case kPoints_GrPrimitiveType: + case kLineStrip_GrPrimitiveType: return 1; - case GrPrimitiveType::kLinesAdjacency: - return 4; } SkFAIL("Incomplete switch\n"); return 0; @@ -362,7 +358,7 @@ static void randomize_params(size_t count, size_t maxVertex, SkScalar min, SkSca } GR_LEGACY_MESH_DRAW_OP_TEST_DEFINE(VerticesOp) { - GrPrimitiveType type = GrPrimitiveType(random->nextULessThan(kNumGrPrimitiveTypes)); + GrPrimitiveType type = GrPrimitiveType(random->nextULessThan(kLast_GrPrimitiveType + 1)); uint32_t primitiveCount = random->nextRangeU(1, 100); // TODO make 'sensible' indexbuffers diff --git a/src/gpu/ops/GrDrawVerticesOp.h b/src/gpu/ops/GrDrawVerticesOp.h index aea80078a1..1d788ab15c 100644 --- a/src/gpu/ops/GrDrawVerticesOp.h +++ b/src/gpu/ops/GrDrawVerticesOp.h @@ -70,9 +70,9 @@ private: GrPrimitiveType primitiveType() const { return fPrimitiveType; } bool combinablePrimitive() const { - return GrPrimitiveType::kTriangles == fPrimitiveType || - GrPrimitiveType::kLines == fPrimitiveType || - GrPrimitiveType::kPoints == fPrimitiveType; + return kTriangles_GrPrimitiveType == fPrimitiveType || + kLines_GrPrimitiveType == fPrimitiveType || + kPoints_GrPrimitiveType == fPrimitiveType; } bool onCombineIfPossible(GrOp* t, const GrCaps&) override; diff --git a/src/gpu/ops/GrLatticeOp.cpp b/src/gpu/ops/GrLatticeOp.cpp index 50b957cd21..effab8cdcf 100644 --- a/src/gpu/ops/GrLatticeOp.cpp +++ b/src/gpu/ops/GrLatticeOp.cpp @@ -86,7 +86,7 @@ private: } sk_sp<const GrBuffer> indexBuffer(target->resourceProvider()->refQuadIndexBuffer()); - PatternHelper helper(GrPrimitiveType::kTriangles); + PatternHelper helper(kTriangles_GrPrimitiveType); void* vertices = helper.init(target, vertexStride, indexBuffer.get(), kVertsPerRect, kIndicesPerRect, numRects); if (!vertices || !indexBuffer) { diff --git a/src/gpu/ops/GrMSAAPathRenderer.cpp b/src/gpu/ops/GrMSAAPathRenderer.cpp index ef64ecfe7d..50a839d7b0 100644 --- a/src/gpu/ops/GrMSAAPathRenderer.cpp +++ b/src/gpu/ops/GrMSAAPathRenderer.cpp @@ -330,8 +330,8 @@ private: return; } - GrPrimitiveType primitiveType = fIsIndexed ? GrPrimitiveType::kTriangles - : GrPrimitiveType::kTriangleFan; + GrPrimitiveType primitiveType = fIsIndexed ? kTriangles_GrPrimitiveType + : kTriangleFan_GrPrimitiveType; // allocate vertex / index buffers const GrBuffer* lineVertexBuffer; @@ -437,7 +437,7 @@ private: target->makeVertexSpace(quadVertexStride, quadVertexOffset, &quadVertexBuffer, &firstQuadVertex); memcpy(quadVertices, quads.vertices, quadVertexStride * quadVertexOffset); - GrMesh quadMeshes(GrPrimitiveType::kTriangles); + GrMesh quadMeshes(kTriangles_GrPrimitiveType); if (!fIsIndexed) { quadMeshes.setNonIndexedNonInstanced(quadVertexOffset); } else { diff --git a/src/gpu/ops/GrMeshDrawOp.h b/src/gpu/ops/GrMeshDrawOp.h index 349e8b6bda..178ca2986b 100644 --- a/src/gpu/ops/GrMeshDrawOp.h +++ b/src/gpu/ops/GrMeshDrawOp.h @@ -52,7 +52,7 @@ protected: /** A specialization of InstanceHelper for quad rendering. */ class QuadHelper : private PatternHelper { public: - QuadHelper() : INHERITED(GrPrimitiveType::kTriangles) {} + QuadHelper() : INHERITED(kTriangles_GrPrimitiveType) {} /** Finds the cached quad index buffer and reserves vertex space. Returns nullptr on failure and on success a pointer to the vertex data that the caller should populate before calling recordDraws(). */ diff --git a/src/gpu/ops/GrNonAAFillRectOp.cpp b/src/gpu/ops/GrNonAAFillRectOp.cpp index defc7907b9..32e77da52b 100644 --- a/src/gpu/ops/GrNonAAFillRectOp.cpp +++ b/src/gpu/ops/GrNonAAFillRectOp.cpp @@ -175,7 +175,7 @@ private: int rectCount = fRects.count(); sk_sp<const GrBuffer> indexBuffer(target->resourceProvider()->refQuadIndexBuffer()); - PatternHelper helper(GrPrimitiveType::kTriangles); + PatternHelper helper(kTriangles_GrPrimitiveType); void* vertices = helper.init(target, vertexStride, indexBuffer.get(), kVertsPerRect, kIndicesPerRect, rectCount); if (!vertices || !indexBuffer) { @@ -296,7 +296,7 @@ private: int rectCount = fRects.count(); sk_sp<const GrBuffer> indexBuffer(target->resourceProvider()->refQuadIndexBuffer()); - PatternHelper helper(GrPrimitiveType::kTriangles); + PatternHelper helper(kTriangles_GrPrimitiveType); void* vertices = helper.init(target, vertexStride, indexBuffer.get(), kVertsPerRect, kIndicesPerRect, rectCount); if (!vertices || !indexBuffer) { diff --git a/src/gpu/ops/GrNonAAStrokeRectOp.cpp b/src/gpu/ops/GrNonAAStrokeRectOp.cpp index 94dc373fc6..eee8120eff 100644 --- a/src/gpu/ops/GrNonAAStrokeRectOp.cpp +++ b/src/gpu/ops/GrNonAAStrokeRectOp.cpp @@ -144,11 +144,11 @@ private: GrPrimitiveType primType; if (fStrokeWidth > 0) { - primType = GrPrimitiveType::kTriangleStrip; + primType = kTriangleStrip_GrPrimitiveType; init_stroke_rect_strip(vertex, fRect, fStrokeWidth); } else { // hairline - primType = GrPrimitiveType::kLineStrip; + primType = kLineStrip_GrPrimitiveType; vertex[0].set(fRect.fLeft, fRect.fTop); vertex[1].set(fRect.fRight, fRect.fTop); vertex[2].set(fRect.fRight, fRect.fBottom); diff --git a/src/gpu/ops/GrOvalOpFactory.cpp b/src/gpu/ops/GrOvalOpFactory.cpp index 15c2569334..2b9d1c8e56 100644 --- a/src/gpu/ops/GrOvalOpFactory.cpp +++ b/src/gpu/ops/GrOvalOpFactory.cpp @@ -1082,7 +1082,7 @@ private: vertices += circle_type_to_vert_count(circle.fStroked) * vertexStride; } - GrMesh mesh(GrPrimitiveType::kTriangles); + GrMesh mesh(kTriangles_GrPrimitiveType); mesh.setIndexed(indexBuffer, fIndexCount, firstIndex, 0, fVertCount - 1); mesh.setVertexData(vertexBuffer, firstVertex); target->draw(gp.get(), fHelper.makePipeline(target), mesh); @@ -1987,7 +1987,7 @@ private: currStartVertex += rrect_type_to_vert_count(rrect.fType); } - GrMesh mesh(GrPrimitiveType::kTriangles); + GrMesh mesh(kTriangles_GrPrimitiveType); mesh.setIndexed(indexBuffer, fIndexCount, firstIndex, 0, fVertCount - 1); mesh.setVertexData(vertexBuffer, firstVertex); target->draw(gp.get(), fHelper.makePipeline(target), mesh); @@ -2177,7 +2177,7 @@ private: sk_sp<const GrBuffer> indexBuffer(ref_rrect_index_buffer( fStroked ? kStroke_RRectType : kFill_RRectType, target->resourceProvider())); - PatternHelper helper(GrPrimitiveType::kTriangles); + PatternHelper helper(kTriangles_GrPrimitiveType); EllipseVertex* verts = reinterpret_cast<EllipseVertex*>( helper.init(target, vertexStride, indexBuffer.get(), kVertsPerStandardRRect, indicesPerInstance, fRRects.count())); diff --git a/src/gpu/ops/GrRegionOp.cpp b/src/gpu/ops/GrRegionOp.cpp index 3920b02437..62d7362635 100644 --- a/src/gpu/ops/GrRegionOp.cpp +++ b/src/gpu/ops/GrRegionOp.cpp @@ -103,7 +103,7 @@ private: size_t vertexStride = gp->getVertexStride(); sk_sp<const GrBuffer> indexBuffer(target->resourceProvider()->refQuadIndexBuffer()); - PatternHelper helper(GrPrimitiveType::kTriangles); + PatternHelper helper(kTriangles_GrPrimitiveType); void* vertices = helper.init(target, vertexStride, indexBuffer.get(), kVertsPerInstance, kIndicesPerInstance, numRects); diff --git a/src/gpu/ops/GrShadowRRectOp.cpp b/src/gpu/ops/GrShadowRRectOp.cpp index 13cfc4dd8b..af41bd48ee 100644 --- a/src/gpu/ops/GrShadowRRectOp.cpp +++ b/src/gpu/ops/GrShadowRRectOp.cpp @@ -628,7 +628,7 @@ private: } } - GrMesh mesh(GrPrimitiveType::kTriangles); + GrMesh mesh(kTriangles_GrPrimitiveType); mesh.setIndexed(indexBuffer, fIndexCount, firstIndex, 0, fVertCount - 1); mesh.setVertexData(vertexBuffer, firstVertex); target->draw(gp.get(), this->pipeline(), mesh); diff --git a/src/gpu/ops/GrSmallPathRenderer.cpp b/src/gpu/ops/GrSmallPathRenderer.cpp index b45b1297b9..048351bab7 100644 --- a/src/gpu/ops/GrSmallPathRenderer.cpp +++ b/src/gpu/ops/GrSmallPathRenderer.cpp @@ -679,7 +679,7 @@ private: void flush(GrLegacyMeshDrawOp::Target* target, FlushInfo* flushInfo) const { if (flushInfo->fInstancesToFlush) { - GrMesh mesh(GrPrimitiveType::kTriangles); + GrMesh mesh(kTriangles_GrPrimitiveType); int maxInstancesPerDraw = static_cast<int>(flushInfo->fIndexBuffer->gpuMemorySize() / sizeof(uint16_t) / 6); mesh.setIndexedPatterned(flushInfo->fIndexBuffer.get(), kIndicesPerQuad, diff --git a/src/gpu/ops/GrTessellatingPathRenderer.cpp b/src/gpu/ops/GrTessellatingPathRenderer.cpp index 7637af04a8..27de8f2e5f 100644 --- a/src/gpu/ops/GrTessellatingPathRenderer.cpp +++ b/src/gpu/ops/GrTessellatingPathRenderer.cpp @@ -313,7 +313,7 @@ private: void drawVertices(Target* target, const GrGeometryProcessor* gp, const GrBuffer* vb, int firstVertex, int count) const { - GrMesh mesh(TESSELLATOR_WIREFRAME ? GrPrimitiveType::kLines : GrPrimitiveType::kTriangles); + GrMesh mesh(TESSELLATOR_WIREFRAME ? kLines_GrPrimitiveType : kTriangles_GrPrimitiveType); mesh.setNonIndexedNonInstanced(count); mesh.setVertexData(vb, firstVertex); target->draw(gp, this->pipeline(), mesh); diff --git a/src/gpu/vk/GrVkPipeline.cpp b/src/gpu/vk/GrVkPipeline.cpp index 567d6e89f6..0b4289edec 100644 --- a/src/gpu/vk/GrVkPipeline.cpp +++ b/src/gpu/vk/GrVkPipeline.cpp @@ -94,35 +94,24 @@ static void setup_vertex_input_state(const GrPrimitiveProcessor& primProc, vertexInputInfo->pVertexAttributeDescriptions = attributeDesc; } -static VkPrimitiveTopology gr_primitive_type_to_vk_topology(GrPrimitiveType primitiveType) { - switch (primitiveType) { - case GrPrimitiveType::kTriangles: - return VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST; - case GrPrimitiveType::kTriangleStrip: - return VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP; - case GrPrimitiveType::kTriangleFan: - return VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN; - case GrPrimitiveType::kPoints: - return VK_PRIMITIVE_TOPOLOGY_POINT_LIST; - case GrPrimitiveType::kLines: - return VK_PRIMITIVE_TOPOLOGY_LINE_LIST; - case GrPrimitiveType::kLineStrip: - return VK_PRIMITIVE_TOPOLOGY_LINE_STRIP; - case GrPrimitiveType::kLinesAdjacency: - return VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY; - } - SkFAIL("invalid GrPrimitiveType"); - return VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST; -} static void setup_input_assembly_state(GrPrimitiveType primitiveType, VkPipelineInputAssemblyStateCreateInfo* inputAssemblyInfo) { + static const VkPrimitiveTopology gPrimitiveType2VkTopology[] = { + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP, + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN, + VK_PRIMITIVE_TOPOLOGY_POINT_LIST, + VK_PRIMITIVE_TOPOLOGY_LINE_LIST, + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP + }; + memset(inputAssemblyInfo, 0, sizeof(VkPipelineInputAssemblyStateCreateInfo)); inputAssemblyInfo->sType = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO; inputAssemblyInfo->pNext = nullptr; inputAssemblyInfo->flags = 0; inputAssemblyInfo->primitiveRestartEnable = false; - inputAssemblyInfo->topology = gr_primitive_type_to_vk_topology(primitiveType); + inputAssemblyInfo->topology = gPrimitiveType2VkTopology[primitiveType]; } diff --git a/src/gpu/vk/GrVkPipelineState.cpp b/src/gpu/vk/GrVkPipelineState.cpp index eb4a516343..525d75f3da 100644 --- a/src/gpu/vk/GrVkPipelineState.cpp +++ b/src/gpu/vk/GrVkPipelineState.cpp @@ -570,7 +570,7 @@ bool GrVkPipelineState::Desc::Build(Desc* desc, const GrStencilSettings& stencil, GrPrimitiveType primitiveType, const GrShaderCaps& caps) { - if (!INHERITED::Build(desc, primProc, primitiveType == GrPrimitiveType::kPoints, pipeline, + if (!INHERITED::Build(desc, primProc, primitiveType == kPoints_GrPrimitiveType, pipeline, caps)) { return false; } @@ -583,7 +583,7 @@ bool GrVkPipelineState::Desc::Build(Desc* desc, b.add32(get_blend_info_key(pipeline)); - b.add32((uint32_t)primitiveType); + b.add32(primitiveType); return true; } diff --git a/tests/GrMeshTest.cpp b/tests/GrMeshTest.cpp index 0811982a54..dd2a2d9e33 100644 --- a/tests/GrMeshTest.cpp +++ b/tests/GrMeshTest.cpp @@ -147,7 +147,7 @@ DEF_GPUTEST_FOR_RENDERING_CONTEXTS(GrMeshTest, reporter, ctxInfo) { auto vbuff = helper->makeVertexBuffer(expandedVertexData); VALIDATE(vbuff); for (int y = 0; y < kBoxCountY; ++y) { - GrMesh mesh(GrPrimitiveType::kTriangles); + GrMesh mesh(kTriangles_GrPrimitiveType); mesh.setNonIndexedNonInstanced(kBoxCountX * 6); mesh.setVertexData(vbuff.get(), y * kBoxCountX * 6); helper->drawMesh(mesh); @@ -167,7 +167,7 @@ DEF_GPUTEST_FOR_RENDERING_CONTEXTS(GrMeshTest, reporter, ctxInfo) { GR_STATIC_ASSERT(kIndexPatternRepeatCount >= 3); int repetitionCount = SkTMin(3 - baseRepetition, kBoxCount - i); - GrMesh mesh(GrPrimitiveType::kTriangles); + GrMesh mesh(kTriangles_GrPrimitiveType); mesh.setIndexed(ibuff.get(), repetitionCount * 6, baseRepetition * 6, baseRepetition * 4, (baseRepetition + repetitionCount) * 4 - 1); mesh.setVertexData(vbuff.get(), (i - baseRepetition) * 4); @@ -187,7 +187,7 @@ DEF_GPUTEST_FOR_RENDERING_CONTEXTS(GrMeshTest, reporter, ctxInfo) { // Draw boxes one line at a time to exercise base vertex. setIndexedPatterned does not // support a base index. for (int y = 0; y < kBoxCountY; ++y) { - GrMesh mesh(GrPrimitiveType::kTriangles); + GrMesh mesh(kTriangles_GrPrimitiveType); mesh.setIndexedPatterned(ibuff.get(), 6, 4, kBoxCountX, kIndexPatternRepeatCount); mesh.setVertexData(vbuff.get(), y * kBoxCountX * 4); helper->drawMesh(mesh); @@ -213,8 +213,7 @@ DEF_GPUTEST_FOR_RENDERING_CONTEXTS(GrMeshTest, reporter, ctxInfo) { // Draw boxes one line at a time to exercise base instance, base vertex, and null vertex // buffer. setIndexedInstanced intentionally does not support a base index. for (int y = 0; y < kBoxCountY; ++y) { - GrMesh mesh(indexed ? GrPrimitiveType::kTriangles - : GrPrimitiveType::kTriangleStrip); + GrMesh mesh(indexed ? kTriangles_GrPrimitiveType : kTriangleStrip_GrPrimitiveType); if (indexed) { VALIDATE(idxbuff); mesh.setIndexedInstanced(idxbuff.get(), 6, diff --git a/tests/GrPipelineDynamicStateTest.cpp b/tests/GrPipelineDynamicStateTest.cpp index f3dd27316d..4c5843aeb1 100644 --- a/tests/GrPipelineDynamicStateTest.cpp +++ b/tests/GrPipelineDynamicStateTest.cpp @@ -126,7 +126,7 @@ private: GrPipeline pipeline(rt, fScissorState, SkBlendMode::kSrc); SkSTArray<kNumMeshes, GrMesh> meshes; for (int i = 0; i < kNumMeshes; ++i) { - GrMesh& mesh = meshes.emplace_back(GrPrimitiveType::kTriangleStrip); + GrMesh& mesh = meshes.emplace_back(kTriangleStrip_GrPrimitiveType); mesh.setNonIndexedNonInstanced(4); mesh.setVertexData(fVertexBuffer.get(), 4 * i); } diff --git a/tests/OnFlushCallbackTest.cpp b/tests/OnFlushCallbackTest.cpp index f8198687cb..f8026e816a 100644 --- a/tests/OnFlushCallbackTest.cpp +++ b/tests/OnFlushCallbackTest.cpp @@ -144,7 +144,7 @@ private: } } - GrMesh mesh(GrPrimitiveType::kTriangles); + GrMesh mesh(kTriangles_GrPrimitiveType); mesh.setIndexed(indexBuffer, 6, firstIndex, 0, 3); mesh.setVertexData(vertexBuffer, firstVertex); |