aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/gl/GrGLGpu.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gpu/gl/GrGLGpu.cpp')
-rw-r--r--src/gpu/gl/GrGLGpu.cpp40
1 files changed, 26 insertions, 14 deletions
diff --git a/src/gpu/gl/GrGLGpu.cpp b/src/gpu/gl/GrGLGpu.cpp
index a6fafbed5b..b3f8c2caa8 100644
--- a/src/gpu/gl/GrGLGpu.cpp
+++ b/src/gpu/gl/GrGLGpu.cpp
@@ -2426,15 +2426,6 @@ 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
@@ -2466,7 +2457,7 @@ void GrGLGpu::draw(const GrPipeline& pipeline,
bool hasPoints = false;
for (int i = 0; i < meshCount; ++i) {
- if (meshes[i].primitiveType() == kPoints_GrPrimitiveType) {
+ if (meshes[i].primitiveType() == GrPrimitiveType::kPoints) {
hasPoints = true;
break;
}
@@ -2511,9 +2502,30 @@ 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 = gPrimitiveType2GLMode[primitiveType];
+ const GrGLenum glPrimType = gr_primitive_type_to_gl_mode(primitiveType);
if (this->glCaps().drawArraysBaseVertexIsBroken()) {
this->setupGeometry(primProc, nullptr, vertexBuffer, baseVertex, nullptr, 0);
GL_CALL(DrawArrays(glPrimType, 0, vertexCount));
@@ -2529,7 +2541,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 = gPrimitiveType2GLMode[primitiveType];
+ const GrGLenum glPrimType = gr_primitive_type_to_gl_mode(primitiveType);
GrGLvoid* const indices = reinterpret_cast<void*>(indexBuffer->baseOffset() +
sizeof(uint16_t) * baseIndex);
@@ -2549,7 +2561,7 @@ void GrGLGpu::sendInstancedMeshToGpu(const GrPrimitiveProcessor& primProc, GrPri
int vertexCount, int baseVertex,
const GrBuffer* instanceBuffer, int instanceCount,
int baseInstance) {
- const GrGLenum glPrimType = gPrimitiveType2GLMode[primitiveType];
+ const GrGLenum glPrimType = gr_primitive_type_to_gl_mode(primitiveType);
this->setupGeometry(primProc, nullptr, vertexBuffer, 0, instanceBuffer, baseInstance);
GL_CALL(DrawArraysInstanced(glPrimType, baseVertex, vertexCount, instanceCount));
fStats.incNumDraws();
@@ -2561,7 +2573,7 @@ void GrGLGpu::sendIndexedInstancedMeshToGpu(const GrPrimitiveProcessor& primProc
int baseIndex, const GrBuffer* vertexBuffer,
int baseVertex, const GrBuffer* instanceBuffer,
int instanceCount, int baseInstance) {
- const GrGLenum glPrimType = gPrimitiveType2GLMode[primitiveType];
+ const GrGLenum glPrimType = gr_primitive_type_to_gl_mode(primitiveType);
GrGLvoid* indices = reinterpret_cast<void*>(indexBuffer->baseOffset() +
sizeof(uint16_t) * baseIndex);
this->setupGeometry(primProc, indexBuffer, vertexBuffer, baseVertex,