| OLD | NEW | 
|    1 /* |    1 /* | 
|    2  * Copyright 2015 Google Inc. |    2  * Copyright 2015 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 "Benchmark.h" |    8 #include "Benchmark.h" | 
|    9 #include "SkCanvas.h" |    9 #include "SkCanvas.h" | 
|   10 #include "SkImageEncoder.h" |   10 #include "SkImageEncoder.h" | 
|   11  |   11  | 
|   12 #if SK_SUPPORT_GPU |   12 #if SK_SUPPORT_GPU | 
|   13 #include "GLBench.h" |   13 #include "GLBench.h" | 
 |   14 #include "gl/GrGLContext.h" | 
|   14 #include "gl/GrGLGLSL.h" |   15 #include "gl/GrGLGLSL.h" | 
|   15 #include "gl/GrGLInterface.h" |   16 #include "gl/GrGLInterface.h" | 
|   16 #include "gl/GrGLShaderVar.h" |   17 #include "gl/GrGLShaderVar.h" | 
|   17 #include "gl/GrGLUtil.h" |   18 #include "gl/GrGLUtil.h" | 
|   18 #include "glsl/GrGLSLCaps.h" |   19 #include "glsl/GrGLSLCaps.h" | 
|   19  |   20  | 
|   20 /* |   21 /* | 
|   21  * This is a native GL benchmark for instanced arrays vs vertex buffer objects. 
      To benchmark this |   22  * This is a native GL benchmark for instanced arrays vs vertex buffer objects. 
      To benchmark this | 
|   22  * functionality, we draw n * kDrawMultipier triangles per run.  If this number 
     is less than |   23  * functionality, we draw n * kDrawMultipier triangles per run.  If this number 
     is less than | 
|   23  * kNumTri then we do a single draw, either with instances, or drawArrays.  Othe
     rwise we do |   24  * kNumTri then we do a single draw, either with instances, or drawArrays.  Othe
     rwise we do | 
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  107  |  108  | 
|  108 GrGLuint GLCpuPosInstancedArraysBench::setupShader(const GrGLContext* ctx) { |  109 GrGLuint GLCpuPosInstancedArraysBench::setupShader(const GrGLContext* ctx) { | 
|  109     const char* version = GrGLGetGLSLVersionDecl(*ctx); |  110     const char* version = GrGLGetGLSLVersionDecl(*ctx); | 
|  110  |  111  | 
|  111     // setup vertex shader |  112     // setup vertex shader | 
|  112     GrGLShaderVar aPosition("a_position", kVec2f_GrSLType, GrShaderVar::kAttribu
     te_TypeModifier); |  113     GrGLShaderVar aPosition("a_position", kVec2f_GrSLType, GrShaderVar::kAttribu
     te_TypeModifier); | 
|  113     GrGLShaderVar aColor("a_color", kVec3f_GrSLType, GrShaderVar::kAttribute_Typ
     eModifier); |  114     GrGLShaderVar aColor("a_color", kVec3f_GrSLType, GrShaderVar::kAttribute_Typ
     eModifier); | 
|  114     GrGLShaderVar oColor("o_color", kVec3f_GrSLType, GrShaderVar::kVaryingOut_Ty
     peModifier); |  115     GrGLShaderVar oColor("o_color", kVec3f_GrSLType, GrShaderVar::kVaryingOut_Ty
     peModifier); | 
|  115  |  116  | 
|  116     SkString vshaderTxt(version); |  117     SkString vshaderTxt(version); | 
|  117     aPosition.appendDecl(*ctx, &vshaderTxt); |  118     aPosition.appendDecl(ctx->caps()->glslCaps(), &vshaderTxt); | 
|  118     vshaderTxt.append(";\n"); |  119     vshaderTxt.append(";\n"); | 
|  119     aColor.appendDecl(*ctx, &vshaderTxt); |  120     aColor.appendDecl(ctx->caps()->glslCaps(), &vshaderTxt); | 
|  120     vshaderTxt.append(";\n"); |  121     vshaderTxt.append(";\n"); | 
|  121     oColor.appendDecl(*ctx, &vshaderTxt); |  122     oColor.appendDecl(ctx->caps()->glslCaps(), &vshaderTxt); | 
|  122     vshaderTxt.append(";\n"); |  123     vshaderTxt.append(";\n"); | 
|  123  |  124  | 
|  124     vshaderTxt.append( |  125     vshaderTxt.append( | 
|  125             "void main()\n" |  126             "void main()\n" | 
|  126             "{\n" |  127             "{\n" | 
|  127                 "gl_Position = vec4(a_position, 0.f, 1.f);\n" |  128                 "gl_Position = vec4(a_position, 0.f, 1.f);\n" | 
|  128                 "o_color = a_color;\n" |  129                 "o_color = a_color;\n" | 
|  129             "}\n"); |  130             "}\n"); | 
|  130  |  131  | 
|  131     const GrGLInterface* gl = ctx->interface(); |  132     const GrGLInterface* gl = ctx->interface(); | 
|  132  |  133  | 
|  133     // setup fragment shader |  134     // setup fragment shader | 
|  134     GrGLShaderVar oFragColor("o_FragColor", kVec4f_GrSLType, GrShaderVar::kOut_T
     ypeModifier); |  135     GrGLShaderVar oFragColor("o_FragColor", kVec4f_GrSLType, GrShaderVar::kOut_T
     ypeModifier); | 
|  135     SkString fshaderTxt(version); |  136     SkString fshaderTxt(version); | 
|  136     GrGLAppendGLSLDefaultFloatPrecisionDeclaration(kDefault_GrSLPrecision, gl->f
     Standard, |  137     GrGLAppendGLSLDefaultFloatPrecisionDeclaration(kDefault_GrSLPrecision, gl->f
     Standard, | 
|  137                                                    &fshaderTxt); |  138                                                    &fshaderTxt); | 
|  138     oColor.setTypeModifier(GrShaderVar::kVaryingIn_TypeModifier); |  139     oColor.setTypeModifier(GrShaderVar::kVaryingIn_TypeModifier); | 
|  139     oColor.appendDecl(*ctx, &fshaderTxt); |  140     oColor.appendDecl(ctx->caps()->glslCaps(), &fshaderTxt); | 
|  140     fshaderTxt.append(";\n"); |  141     fshaderTxt.append(";\n"); | 
|  141  |  142  | 
|  142     const char* fsOutName; |  143     const char* fsOutName; | 
|  143     if (ctx->caps()->glslCaps()->mustDeclareFragmentShaderOutput()) { |  144     if (ctx->caps()->glslCaps()->mustDeclareFragmentShaderOutput()) { | 
|  144         oFragColor.appendDecl(*ctx, &fshaderTxt); |  145         oFragColor.appendDecl(ctx->caps()->glslCaps(), &fshaderTxt); | 
|  145         fshaderTxt.append(";\n"); |  146         fshaderTxt.append(";\n"); | 
|  146         fsOutName = oFragColor.c_str(); |  147         fsOutName = oFragColor.c_str(); | 
|  147     } else { |  148     } else { | 
|  148         fsOutName = "gl_FragColor"; |  149         fsOutName = "gl_FragColor"; | 
|  149     } |  150     } | 
|  150  |  151  | 
|  151     fshaderTxt.appendf( |  152     fshaderTxt.appendf( | 
|  152             "void main()\n" |  153             "void main()\n" | 
|  153             "{\n" |  154             "{\n" | 
|  154                 "%s = vec4(o_color, 1.0f);\n" |  155                 "%s = vec4(o_color, 1.0f);\n" | 
| (...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  388 DEF_BENCH( return new GLCpuPosInstancedArraysBench(GLCpuPosInstancedArraysBench:
     :kUseOne_VboSetup, 1) ) |  389 DEF_BENCH( return new GLCpuPosInstancedArraysBench(GLCpuPosInstancedArraysBench:
     :kUseOne_VboSetup, 1) ) | 
|  389 DEF_BENCH( return new GLCpuPosInstancedArraysBench(GLCpuPosInstancedArraysBench:
     :kUseTwo_VboSetup, 1) ) |  390 DEF_BENCH( return new GLCpuPosInstancedArraysBench(GLCpuPosInstancedArraysBench:
     :kUseTwo_VboSetup, 1) ) | 
|  390 DEF_BENCH( return new GLCpuPosInstancedArraysBench(GLCpuPosInstancedArraysBench:
     :kUseOne_VboSetup, 2) ) |  391 DEF_BENCH( return new GLCpuPosInstancedArraysBench(GLCpuPosInstancedArraysBench:
     :kUseOne_VboSetup, 2) ) | 
|  391 DEF_BENCH( return new GLCpuPosInstancedArraysBench(GLCpuPosInstancedArraysBench:
     :kUseTwo_VboSetup, 2) ) |  392 DEF_BENCH( return new GLCpuPosInstancedArraysBench(GLCpuPosInstancedArraysBench:
     :kUseTwo_VboSetup, 2) ) | 
|  392 DEF_BENCH( return new GLCpuPosInstancedArraysBench(GLCpuPosInstancedArraysBench:
     :kUseOne_VboSetup, 4) ) |  393 DEF_BENCH( return new GLCpuPosInstancedArraysBench(GLCpuPosInstancedArraysBench:
     :kUseOne_VboSetup, 4) ) | 
|  393 DEF_BENCH( return new GLCpuPosInstancedArraysBench(GLCpuPosInstancedArraysBench:
     :kUseTwo_VboSetup, 4) ) |  394 DEF_BENCH( return new GLCpuPosInstancedArraysBench(GLCpuPosInstancedArraysBench:
     :kUseTwo_VboSetup, 4) ) | 
|  394 DEF_BENCH( return new GLCpuPosInstancedArraysBench(GLCpuPosInstancedArraysBench:
     :kUseOne_VboSetup, 8) ) |  395 DEF_BENCH( return new GLCpuPosInstancedArraysBench(GLCpuPosInstancedArraysBench:
     :kUseOne_VboSetup, 8) ) | 
|  395 DEF_BENCH( return new GLCpuPosInstancedArraysBench(GLCpuPosInstancedArraysBench:
     :kUseTwo_VboSetup, 8) ) |  396 DEF_BENCH( return new GLCpuPosInstancedArraysBench(GLCpuPosInstancedArraysBench:
     :kUseTwo_VboSetup, 8) ) | 
|  396  |  397  | 
|  397 #endif |  398 #endif | 
| OLD | NEW |