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

Side by Side Diff: src/gpu/gl/GrGLGpu.cpp

Issue 1494473005: Add option to draw wireframe batch bounds (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: init vbo id to 0 Created 5 years 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 | « src/gpu/gl/GrGLGpu.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 * Copyright 2011 Google Inc. 2 * Copyright 2011 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 8
9 #include "GrGLGpu.h" 9 #include "GrGLGpu.h"
10 #include "GrGLGLSL.h" 10 #include "GrGLGLSL.h"
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
225 fPixelConfigToStencilIndex[i] = kUnknownStencilIndex; 225 fPixelConfigToStencilIndex[i] = kUnknownStencilIndex;
226 } 226 }
227 fHWProgramID = 0; 227 fHWProgramID = 0;
228 fTempSrcFBOID = 0; 228 fTempSrcFBOID = 0;
229 fTempDstFBOID = 0; 229 fTempDstFBOID = 0;
230 fStencilClearFBOID = 0; 230 fStencilClearFBOID = 0;
231 231
232 if (this->glCaps().shaderCaps()->pathRenderingSupport()) { 232 if (this->glCaps().shaderCaps()->pathRenderingSupport()) {
233 fPathRendering.reset(new GrGLPathRendering(this)); 233 fPathRendering.reset(new GrGLPathRendering(this));
234 } 234 }
235
236 this->createCopyPrograms(); 235 this->createCopyPrograms();
236 fWireRectProgram.fProgram = 0;
237 fWireRectArrayBuffer = 0;
237 } 238 }
238 239
239 GrGLGpu::~GrGLGpu() { 240 GrGLGpu::~GrGLGpu() {
240 if (0 != fHWProgramID) { 241 if (0 != fHWProgramID) {
241 // detach the current program so there is no confusion on OpenGL's part 242 // detach the current program so there is no confusion on OpenGL's part
242 // that we want it to be deleted 243 // that we want it to be deleted
243 GL_CALL(UseProgram(0)); 244 GL_CALL(UseProgram(0));
244 } 245 }
245 246
246 if (0 != fTempSrcFBOID) { 247 if (0 != fTempSrcFBOID) {
247 GL_CALL(DeleteFramebuffers(1, &fTempSrcFBOID)); 248 GL_CALL(DeleteFramebuffers(1, &fTempSrcFBOID));
248 } 249 }
249 if (0 != fTempDstFBOID) { 250 if (0 != fTempDstFBOID) {
250 GL_CALL(DeleteFramebuffers(1, &fTempDstFBOID)); 251 GL_CALL(DeleteFramebuffers(1, &fTempDstFBOID));
251 } 252 }
252 if (0 != fStencilClearFBOID) { 253 if (0 != fStencilClearFBOID) {
253 GL_CALL(DeleteFramebuffers(1, &fStencilClearFBOID)); 254 GL_CALL(DeleteFramebuffers(1, &fStencilClearFBOID));
254 } 255 }
255 256
256 for (size_t i = 0; i < SK_ARRAY_COUNT(fCopyPrograms); ++i) { 257 for (size_t i = 0; i < SK_ARRAY_COUNT(fCopyPrograms); ++i) {
257 if (0 != fCopyPrograms[i].fProgram) { 258 if (0 != fCopyPrograms[i].fProgram) {
258 GL_CALL(DeleteProgram(fCopyPrograms[i].fProgram)); 259 GL_CALL(DeleteProgram(fCopyPrograms[i].fProgram));
259 } 260 }
260 } 261 }
262
261 if (0 != fCopyProgramArrayBuffer) { 263 if (0 != fCopyProgramArrayBuffer) {
262 GL_CALL(DeleteBuffers(1, &fCopyProgramArrayBuffer)); 264 GL_CALL(DeleteBuffers(1, &fCopyProgramArrayBuffer));
263 } 265 }
264 266
267 if (0 != fWireRectProgram.fProgram) {
268 GL_CALL(DeleteProgram(fWireRectProgram.fProgram));
269 }
270
271 if (0 != fWireRectArrayBuffer) {
272 GL_CALL(DeleteBuffers(1, &fWireRectArrayBuffer));
273 }
274
265 delete fProgramCache; 275 delete fProgramCache;
266 } 276 }
267 277
268 void GrGLGpu::contextAbandoned() { 278 void GrGLGpu::contextAbandoned() {
269 INHERITED::contextAbandoned(); 279 INHERITED::contextAbandoned();
270 fProgramCache->abandon(); 280 fProgramCache->abandon();
271 fHWProgramID = 0; 281 fHWProgramID = 0;
272 fTempSrcFBOID = 0; 282 fTempSrcFBOID = 0;
273 fTempDstFBOID = 0; 283 fTempDstFBOID = 0;
274 fStencilClearFBOID = 0; 284 fStencilClearFBOID = 0;
275 fCopyProgramArrayBuffer = 0; 285 fCopyProgramArrayBuffer = 0;
276 for (size_t i = 0; i < SK_ARRAY_COUNT(fCopyPrograms); ++i) { 286 for (size_t i = 0; i < SK_ARRAY_COUNT(fCopyPrograms); ++i) {
277 fCopyPrograms[i].fProgram = 0; 287 fCopyPrograms[i].fProgram = 0;
278 } 288 }
289 fWireRectProgram.fProgram = 0;
290 fWireRectArrayBuffer = 0;
279 if (this->glCaps().shaderCaps()->pathRenderingSupport()) { 291 if (this->glCaps().shaderCaps()->pathRenderingSupport()) {
280 this->glPathRendering()->abandonGpuResources(); 292 this->glPathRendering()->abandonGpuResources();
281 } 293 }
282 } 294 }
283 295
284 /////////////////////////////////////////////////////////////////////////////// 296 ///////////////////////////////////////////////////////////////////////////////
285 297
286 void GrGLGpu::onResetContext(uint32_t resetBits) { 298 void GrGLGpu::onResetContext(uint32_t resetBits) {
287 // we don't use the zb at all 299 // we don't use the zb at all
288 if (resetBits & kMisc_GrGLBackendState) { 300 if (resetBits & kMisc_GrGLBackendState) {
(...skipping 2720 matching lines...) Expand 10 before | Expand all | Expand 10 after
3009 return true; 3021 return true;
3010 } 3022 }
3011 3023
3012 if (can_blit_framebuffer(dst, src, this)) { 3024 if (can_blit_framebuffer(dst, src, this)) {
3013 return this->copySurfaceAsBlitFramebuffer(dst, src, srcRect, dstPoint); 3025 return this->copySurfaceAsBlitFramebuffer(dst, src, srcRect, dstPoint);
3014 } 3026 }
3015 3027
3016 return false; 3028 return false;
3017 } 3029 }
3018 3030
3019
3020 void GrGLGpu::createCopyPrograms() { 3031 void GrGLGpu::createCopyPrograms() {
3021 for (size_t i = 0; i < SK_ARRAY_COUNT(fCopyPrograms); ++i) { 3032 for (size_t i = 0; i < SK_ARRAY_COUNT(fCopyPrograms); ++i) {
3022 fCopyPrograms[i].fProgram = 0; 3033 fCopyPrograms[i].fProgram = 0;
3023 } 3034 }
3024 const char* version = this->glCaps().glslCaps()->versionDeclString(); 3035 const char* version = this->glCaps().glslCaps()->versionDeclString();
3025 static const GrSLType kSamplerTypes[2] = { kSampler2D_GrSLType, kSamplerExte rnal_GrSLType }; 3036 static const GrSLType kSamplerTypes[2] = { kSampler2D_GrSLType, kSamplerExte rnal_GrSLType };
3026 SkASSERT(2 == SK_ARRAY_COUNT(fCopyPrograms)); 3037 SkASSERT(2 == SK_ARRAY_COUNT(fCopyPrograms));
3027 int programCount = this->glCaps().externalTextureSupport() ? 2 : 1; 3038 int programCount = this->glCaps().externalTextureSupport() ? 2 : 1;
3028 for (int i = 0; i < programCount; ++i) { 3039 for (int i = 0; i < programCount; ++i) {
3029 GrGLSLShaderVar aVertex("a_vertex", kVec2f_GrSLType, GrShaderVar::kAttri bute_TypeModifier); 3040 GrGLSLShaderVar aVertex("a_vertex", kVec2f_GrSLType, GrShaderVar::kAttri bute_TypeModifier);
3030 GrGLSLShaderVar uTexCoordXform("u_texCoordXform", kVec4f_GrSLType, 3041 GrGLSLShaderVar uTexCoordXform("u_texCoordXform", kVec4f_GrSLType,
3031 GrShaderVar::kUniform_TypeModifier); 3042 GrShaderVar::kUniform_TypeModifier);
3032 GrGLSLShaderVar uPosXform("u_posXform", kVec4f_GrSLType, 3043 GrGLSLShaderVar uPosXform("u_posXform", kVec4f_GrSLType,
3033 GrShaderVar::kUniform_TypeModifier); 3044 GrShaderVar::kUniform_TypeModifier);
3034 GrGLSLShaderVar uTexture("u_texture", kSamplerTypes[i], 3045 GrGLSLShaderVar uTexture("u_texture", kSamplerTypes[i],
3035 GrShaderVar::kUniform_TypeModifier); 3046 GrShaderVar::kUniform_TypeModifier);
3036 GrGLSLShaderVar vTexCoord("v_texCoord", kVec2f_GrSLType, 3047 GrGLSLShaderVar vTexCoord("v_texCoord", kVec2f_GrSLType,
3037 GrShaderVar::kVaryingOut_TypeModifier); 3048 GrShaderVar::kVaryingOut_TypeModifier);
3038 GrGLSLShaderVar oFragColor("o_FragColor", kVec4f_GrSLType, 3049 GrGLSLShaderVar oFragColor("o_FragColor", kVec4f_GrSLType,
3039 GrShaderVar::kOut_TypeModifier); 3050 GrShaderVar::kOut_TypeModifier);
3040 3051
3041 SkString vshaderTxt(version); 3052 SkString vshaderTxt(version);
3042 aVertex.appendDecl(this->glCaps().glslCaps(), &vshaderTxt); 3053 aVertex.appendDecl(this->glCaps().glslCaps(), &vshaderTxt);
3043 vshaderTxt.append(";"); 3054 vshaderTxt.append(";");
3044 uTexCoordXform.appendDecl(this->glCaps().glslCaps(), &vshaderTxt); 3055 uTexCoordXform.appendDecl(this->glCaps().glslCaps(), &vshaderTxt);
3045 vshaderTxt.append(";"); 3056 vshaderTxt.append(";");
3046 uPosXform.appendDecl(this->glCaps().glslCaps(), &vshaderTxt); 3057 uPosXform.appendDecl(this->glCaps().glslCaps(), &vshaderTxt);
3047 vshaderTxt.append(";"); 3058 vshaderTxt.append(";");
3048 vTexCoord.appendDecl(this->glCaps().glslCaps(), &vshaderTxt); 3059 vTexCoord.appendDecl(this->glCaps().glslCaps(), &vshaderTxt);
3049 vshaderTxt.append(";"); 3060 vshaderTxt.append(";");
3050 3061
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
3126 1, 0, 3137 1, 0,
3127 1, 1 3138 1, 1
3128 }; 3139 };
3129 GL_ALLOC_CALL(this->glInterface(), 3140 GL_ALLOC_CALL(this->glInterface(),
3130 BufferData(GR_GL_ARRAY_BUFFER, 3141 BufferData(GR_GL_ARRAY_BUFFER,
3131 (GrGLsizeiptr) sizeof(vdata), 3142 (GrGLsizeiptr) sizeof(vdata),
3132 vdata, // data ptr 3143 vdata, // data ptr
3133 GR_GL_STATIC_DRAW)); 3144 GR_GL_STATIC_DRAW));
3134 } 3145 }
3135 3146
3147 void GrGLGpu::createWireRectProgram() {
3148 SkASSERT(!fWireRectProgram.fProgram);
3149 GrGLSLShaderVar uColor("u_color", kVec4f_GrSLType, GrShaderVar::kUniform_Typ eModifier);
3150 GrGLSLShaderVar uRect("u_rect", kVec4f_GrSLType, GrShaderVar::kUniform_TypeM odifier);
3151 GrGLSLShaderVar aVertex("a_vertex", kVec2f_GrSLType, GrShaderVar::kAttribute _TypeModifier);
3152 const char* version = this->glCaps().glslCaps()->versionDeclString();
3153
3154 // The rect uniform specifies the rectangle in NDC space as a vec4 (left,top ,right,bottom). The
3155 // program is used with a vbo containing the unit square. Vertices are compu ted from the rect
3156 // uniform using the 4 vbo vertices.
3157 SkString vshaderTxt(version);
3158 aVertex.appendDecl(this->glCaps().glslCaps(), &vshaderTxt);
3159 vshaderTxt.append(";");
3160 uRect.appendDecl(this->glCaps().glslCaps(), &vshaderTxt);
3161 vshaderTxt.append(";");
3162 vshaderTxt.append(
3163 "// Wire Rect Program VS\n"
3164 "void main() {"
3165 " gl_Position.x = u_rect.x + a_vertex.x * (u_rect.z - u_rect.x);"
3166 " gl_Position.y = u_rect.y + a_vertex.y * (u_rect.w - u_rect.y);"
3167 " gl_Position.zw = vec2(0, 1);"
3168 "}"
3169 );
3170
3171 GrGLSLShaderVar oFragColor("o_FragColor", kVec4f_GrSLType, GrShaderVar::kOut _TypeModifier);
3172
3173 SkString fshaderTxt(version);
3174 GrGLSLAppendDefaultFloatPrecisionDeclaration(kDefault_GrSLPrecision,
3175 *this->glCaps().glslCaps(),
3176 &fshaderTxt);
3177 uColor.appendDecl(this->glCaps().glslCaps(), &fshaderTxt);
3178 fshaderTxt.append(";");
3179 const char* fsOutName;
3180 if (this->glCaps().glslCaps()->mustDeclareFragmentShaderOutput()) {
3181 oFragColor.appendDecl(this->glCaps().glslCaps(), &fshaderTxt);
3182 fshaderTxt.append(";");
3183 fsOutName = oFragColor.c_str();
3184 } else {
3185 fsOutName = "gl_FragColor";
3186 }
3187 fshaderTxt.appendf(
3188 "// Write Rect Program FS\n"
3189 "void main() {"
3190 " %s = %s;"
3191 "}",
3192 fsOutName,
3193 uColor.c_str()
3194 );
3195
3196 GL_CALL_RET(fWireRectProgram.fProgram, CreateProgram());
3197 const char* str;
3198 GrGLint length;
3199
3200 str = vshaderTxt.c_str();
3201 length = SkToInt(vshaderTxt.size());
3202 GrGLuint vshader = GrGLCompileAndAttachShader(*fGLContext, fWireRectProgram. fProgram,
3203 GR_GL_VERTEX_SHADER, &str, &le ngth, 1,
3204 &fStats);
3205
3206 str = fshaderTxt.c_str();
3207 length = SkToInt(fshaderTxt.size());
3208 GrGLuint fshader = GrGLCompileAndAttachShader(*fGLContext, fWireRectProgram. fProgram,
3209 GR_GL_FRAGMENT_SHADER, &str, & length, 1,
3210 &fStats);
3211
3212 GL_CALL(LinkProgram(fWireRectProgram.fProgram));
3213
3214 GL_CALL_RET(fWireRectProgram.fColorUniform,
3215 GetUniformLocation(fWireRectProgram.fProgram, "u_color"));
3216 GL_CALL_RET(fWireRectProgram.fRectUniform,
3217 GetUniformLocation(fWireRectProgram.fProgram, "u_rect"));
3218 GL_CALL(BindAttribLocation(fWireRectProgram.fProgram, 0, "a_vertex"));
3219
3220 GL_CALL(DeleteShader(vshader));
3221 GL_CALL(DeleteShader(fshader));
3222 GL_CALL(GenBuffers(1, &fWireRectArrayBuffer));
3223 fHWGeometryState.setVertexBufferID(this, fWireRectArrayBuffer);
3224 static const GrGLfloat vdata[] = {
3225 0, 0,
3226 0, 1,
3227 1, 1,
3228 1, 0,
3229 };
3230 GL_ALLOC_CALL(this->glInterface(),
3231 BufferData(GR_GL_ARRAY_BUFFER,
3232 (GrGLsizeiptr) sizeof(vdata),
3233 vdata, // data ptr
3234 GR_GL_STATIC_DRAW));
3235 }
3236
3237 void GrGLGpu::drawDebugWireRect(GrRenderTarget* rt, const SkIRect& rect, GrColor color) {
3238 this->handleDirtyContext();
3239 if (!fWireRectProgram.fProgram) {
3240 this->createWireRectProgram();
3241 }
3242
3243 int w = rt->width();
3244 int h = rt->height();
3245
3246 // Compute the edges of the rectangle (top,left,right,bottom) in NDC space. Must consider
3247 // whether the render target is flipped or not.
3248 GrGLfloat edges[4];
3249 edges[0] = SkIntToScalar(rect.fLeft) + 0.5f;
3250 edges[2] = SkIntToScalar(rect.fRight) - 0.5f;
3251 if (kBottomLeft_GrSurfaceOrigin == rt->origin()) {
3252 edges[1] = h - (SkIntToScalar(rect.fTop) + 0.5f);
3253 edges[3] = h - (SkIntToScalar(rect.fBottom) - 0.5f);
3254 } else {
3255 edges[1] = SkIntToScalar(rect.fTop) + 0.5f;
3256 edges[3] = SkIntToScalar(rect.fBottom) - 0.5f;
3257 }
3258 edges[0] = 2 * edges[0] / w - 1.0f;
3259 edges[1] = 2 * edges[1] / h - 1.0f;
3260 edges[2] = 2 * edges[2] / w - 1.0f;
3261 edges[3] = 2 * edges[3] / h - 1.0f;
3262
3263 GrGLfloat channels[4];
3264 static const GrGLfloat scale255 = 1.f / 255.f;
3265 channels[0] = GrColorUnpackR(color) * scale255;
3266 channels[1] = GrColorUnpackG(color) * scale255;
3267 channels[2] = GrColorUnpackB(color) * scale255;
3268 channels[3] = GrColorUnpackA(color) * scale255;
3269
3270 GrGLRenderTarget* glRT = static_cast<GrGLRenderTarget*>(rt->asRenderTarget() );
3271 this->flushRenderTarget(glRT, &rect);
3272
3273 GL_CALL(UseProgram(fWireRectProgram.fProgram));
3274 fHWProgramID = fWireRectProgram.fProgram;
3275
3276 fHWGeometryState.setVertexArrayID(this, 0);
3277
3278 GrGLAttribArrayState* attribs =
3279 fHWGeometryState.bindArrayAndBufferToDraw(this, fWireRectArrayBuffer);
3280 attribs->set(this, 0, fWireRectArrayBuffer, 2, GR_GL_FLOAT, false, 2 * sizeo f(GrGLfloat), 0);
3281 attribs->disableUnusedArrays(this, 0x1);
3282
3283 GL_CALL(Uniform4fv(fWireRectProgram.fRectUniform, 1, edges));
3284 GL_CALL(Uniform4fv(fWireRectProgram.fColorUniform, 1, channels));
3285
3286 GrXferProcessor::BlendInfo blendInfo;
3287 blendInfo.reset();
3288 this->flushBlend(blendInfo);
3289 this->flushColorWrite(true);
3290 this->flushDrawFace(GrPipelineBuilder::kBoth_DrawFace);
3291 this->flushHWAAState(glRT, false);
3292 this->disableScissor();
3293 GrStencilSettings stencil;
3294 stencil.setDisabled();
3295 this->flushStencil(stencil);
3296
3297 GL_CALL(DrawArrays(GR_GL_LINE_LOOP, 0, 4));
3298 }
3299
3300
3136 void GrGLGpu::copySurfaceAsDraw(GrSurface* dst, 3301 void GrGLGpu::copySurfaceAsDraw(GrSurface* dst,
3137 GrSurface* src, 3302 GrSurface* src,
3138 const SkIRect& srcRect, 3303 const SkIRect& srcRect,
3139 const SkIPoint& dstPoint) { 3304 const SkIPoint& dstPoint) {
3140 int w = srcRect.width(); 3305 int w = srcRect.width();
3141 int h = srcRect.height(); 3306 int h = srcRect.height();
3142 3307
3143 GrGLTexture* srcTex = static_cast<GrGLTexture*>(src->asTexture()); 3308 GrGLTexture* srcTex = static_cast<GrGLTexture*>(src->asTexture());
3144 GrTextureParams params(SkShader::kClamp_TileMode, GrTextureParams::kNone_Fil terMode); 3309 GrTextureParams params(SkShader::kClamp_TileMode, GrTextureParams::kNone_Fil terMode);
3145 this->bindTexture(0, params, srcTex); 3310 this->bindTexture(0, params, srcTex);
3146 3311
3147 GrGLRenderTarget* dstRT = static_cast<GrGLRenderTarget*>(dst->asRenderTarget ()); 3312 GrGLRenderTarget* dstRT = static_cast<GrGLRenderTarget*>(dst->asRenderTarget ());
3148 SkIRect dstRect = SkIRect::MakeXYWH(dstPoint.fX, dstPoint.fY, w, h); 3313 SkIRect dstRect = SkIRect::MakeXYWH(dstPoint.fX, dstPoint.fY, w, h);
3149 this->flushRenderTarget(dstRT, &dstRect); 3314 this->flushRenderTarget(dstRT, &dstRect);
3150 3315
3151 int progIdx = TextureTargetToCopyProgramIdx(srcTex->target()); 3316 int progIdx = TextureTargetToCopyProgramIdx(srcTex->target());
3152 3317
3153 GL_CALL(UseProgram(fCopyPrograms[progIdx].fProgram)); 3318 GL_CALL(UseProgram(fCopyPrograms[progIdx].fProgram));
3154 fHWProgramID = fCopyPrograms[progIdx].fProgram; 3319 fHWProgramID = fCopyPrograms[progIdx].fProgram;
3155 3320
3156 fHWGeometryState.setVertexArrayID(this, 0); 3321 fHWGeometryState.setVertexArrayID(this, 0);
3157 3322
3158 GrGLAttribArrayState* attribs = 3323 GrGLAttribArrayState* attribs =
3159 fHWGeometryState.bindArrayAndBufferToDraw(this, fCopyProgramArrayBuffer) ; 3324 fHWGeometryState.bindArrayAndBufferToDraw(this, fCopyProgramArrayBuffer) ;
3160 attribs->set(this, 0, fCopyProgramArrayBuffer, 2, GR_GL_FLOAT, false, 3325 attribs->set(this, 0, fCopyProgramArrayBuffer, 2, GR_GL_FLOAT, false, 2 * si zeof(GrGLfloat), 0);
3161 2 * sizeof(GrGLfloat), 0);
3162 attribs->disableUnusedArrays(this, 0x1); 3326 attribs->disableUnusedArrays(this, 0x1);
3163 3327
3164 // dst rect edges in NDC (-1 to 1) 3328 // dst rect edges in NDC (-1 to 1)
3165 int dw = dst->width(); 3329 int dw = dst->width();
3166 int dh = dst->height(); 3330 int dh = dst->height();
3167 GrGLfloat dx0 = 2.f * dstPoint.fX / dw - 1.f; 3331 GrGLfloat dx0 = 2.f * dstPoint.fX / dw - 1.f;
3168 GrGLfloat dx1 = 2.f * (dstPoint.fX + w) / dw - 1.f; 3332 GrGLfloat dx1 = 2.f * (dstPoint.fX + w) / dw - 1.f;
3169 GrGLfloat dy0 = 2.f * dstPoint.fY / dh - 1.f; 3333 GrGLfloat dy0 = 2.f * dstPoint.fY / dh - 1.f;
3170 GrGLfloat dy1 = 2.f * (dstPoint.fY + h) / dh - 1.f; 3334 GrGLfloat dy1 = 2.f * (dstPoint.fY + h) / dh - 1.f;
3171 if (kBottomLeft_GrSurfaceOrigin == dst->origin()) { 3335 if (kBottomLeft_GrSurfaceOrigin == dst->origin()) {
(...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after
3439 this->setVertexArrayID(gpu, 0); 3603 this->setVertexArrayID(gpu, 0);
3440 } 3604 }
3441 int attrCount = gpu->glCaps().maxVertexAttributes(); 3605 int attrCount = gpu->glCaps().maxVertexAttributes();
3442 if (fDefaultVertexArrayAttribState.count() != attrCount) { 3606 if (fDefaultVertexArrayAttribState.count() != attrCount) {
3443 fDefaultVertexArrayAttribState.resize(attrCount); 3607 fDefaultVertexArrayAttribState.resize(attrCount);
3444 } 3608 }
3445 attribState = &fDefaultVertexArrayAttribState; 3609 attribState = &fDefaultVertexArrayAttribState;
3446 } 3610 }
3447 return attribState; 3611 return attribState;
3448 } 3612 }
OLDNEW
« no previous file with comments | « src/gpu/gl/GrGLGpu.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698