void GLCpuPosInstancedArraysBench::glDraw(int loops, const GrGLContext* ctx) { const GrGLInterface* gl = ctx->interface(); uint32_t maxTrianglesPerFlush = fDrawDiv == 0 ? kNumTri : kDrawMultiplier / fDrawDiv; uint32_t trianglesToDraw = loops * kDrawMultiplier; if (kUseInstance_VboSetup == fVboSetup) { while (trianglesToDraw > 0) { uint32_t triangles = SkTMin(trianglesToDraw, maxTrianglesPerFlush); GR_GL_CALL(gl, DrawArraysInstanced(GR_GL_TRIANGLES, 0, kVerticesPerTri, triangles)); trianglesToDraw -= triangles; } } else { while (trianglesToDraw > 0) { uint32_t triangles = SkTMin(trianglesToDraw, maxTrianglesPerFlush); GR_GL_CALL(gl, DrawArrays(GR_GL_TRIANGLES, 0, kVerticesPerTri * triangles)); trianglesToDraw -= triangles; } } #if 0 //const char* filename = "/data/local/tmp/out.png"; SkString filename("out"); filename.appendf("_%s.png", this->getName()); DumpImage(gl, kScreenWidth, kScreenHeight, filename.c_str()); #endif }
void GLGpuPosInstancedArraysBench::onDraw(const int loops, SkCanvas* canvas) { const GrGLInterface* gl = get_interface(canvas); if (!gl) { return; } GR_GL_CALL(gl, DrawArraysInstanced(GR_GL_TRIANGLES, 0, 6, fNumQuads)); #ifdef DUMP_IMAGES const char* filename = "out.png"; dump_image(gl, kScreenWidth, kScreenHeight, filename); #endif SkFAIL("done\n"); }