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

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

Issue 1010253002: Add stencil-only clear bug workaround back but for all devices. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: fix Created 5 years, 9 months 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 | « no previous file | 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 "GrGLStencilBuffer.h" 10 #include "GrGLStencilBuffer.h"
(...skipping 1185 matching lines...) Expand 10 before | Expand all | Expand 10 after
1196 GL_CALL(FramebufferRenderbuffer(GR_GL_FRAMEBUFFER, 1196 GL_CALL(FramebufferRenderbuffer(GR_GL_FRAMEBUFFER,
1197 GR_GL_STENCIL_ATTACHMENT, 1197 GR_GL_STENCIL_ATTACHMENT,
1198 GR_GL_RENDERBUFFER, sbDesc.fRend erbufferID)); 1198 GR_GL_RENDERBUFFER, sbDesc.fRend erbufferID));
1199 if (sFmt.fPacked) { 1199 if (sFmt.fPacked) {
1200 GL_CALL(FramebufferRenderbuffer(GR_GL_FRAMEBUFFER, 1200 GL_CALL(FramebufferRenderbuffer(GR_GL_FRAMEBUFFER,
1201 GR_GL_DEPTH_ATTACHMENT, 1201 GR_GL_DEPTH_ATTACHMENT,
1202 GR_GL_RENDERBUFFER, sbDesc.f RenderbufferID)); 1202 GR_GL_RENDERBUFFER, sbDesc.f RenderbufferID));
1203 } 1203 }
1204 1204
1205 GL_CALL(ClearStencil(0)); 1205 GL_CALL(ClearStencil(0));
1206 // Many GL implementations seem to have trouble with clearing an FBO with only
1207 // a stencil buffer.
1208 GrGLuint tempRB;
1209 GL_CALL(GenRenderbuffers(1, &tempRB));
1210 GL_CALL(BindRenderbuffer(GR_GL_RENDERBUFFER, tempRB));
1211 GL_CALL(RenderbufferStorage(GR_GL_RENDERBUFFER, GR_GL_RGBA8, wid th, height));
1212 GL_CALL(FramebufferRenderbuffer(GR_GL_FRAMEBUFFER,
1213 GR_GL_COLOR_ATTACHMENT0,
1214 GR_GL_RENDERBUFFER, tempRB));
1215
1206 GL_CALL(Clear(GR_GL_STENCIL_BUFFER_BIT)); 1216 GL_CALL(Clear(GR_GL_STENCIL_BUFFER_BIT));
1207 1217
1218 GL_CALL(FramebufferRenderbuffer(GR_GL_FRAMEBUFFER,
1219 GR_GL_COLOR_ATTACHMENT0,
1220 GR_GL_RENDERBUFFER, 0));
1221 GL_CALL(DeleteRenderbuffers(1, &tempRB));
1222
1208 // Unbind the SB from the FBO so that we don't keep it alive. 1223 // Unbind the SB from the FBO so that we don't keep it alive.
1209 GL_CALL(FramebufferRenderbuffer(GR_GL_FRAMEBUFFER, 1224 GL_CALL(FramebufferRenderbuffer(GR_GL_FRAMEBUFFER,
1210 GR_GL_STENCIL_ATTACHMENT, 1225 GR_GL_STENCIL_ATTACHMENT,
1211 GR_GL_RENDERBUFFER, 0)); 1226 GR_GL_RENDERBUFFER, 0));
1212 if (sFmt.fPacked) { 1227 if (sFmt.fPacked) {
1213 GL_CALL(FramebufferRenderbuffer(GR_GL_FRAMEBUFFER, 1228 GL_CALL(FramebufferRenderbuffer(GR_GL_FRAMEBUFFER,
1214 GR_GL_DEPTH_ATTACHMENT, 1229 GR_GL_DEPTH_ATTACHMENT,
1215 GR_GL_RENDERBUFFER, 0)); 1230 GR_GL_RENDERBUFFER, 0));
1216 } 1231 }
1217 1232
(...skipping 1578 matching lines...) Expand 10 before | Expand all | Expand 10 after
2796 this->setVertexArrayID(gpu, 0); 2811 this->setVertexArrayID(gpu, 0);
2797 } 2812 }
2798 int attrCount = gpu->glCaps().maxVertexAttributes(); 2813 int attrCount = gpu->glCaps().maxVertexAttributes();
2799 if (fDefaultVertexArrayAttribState.count() != attrCount) { 2814 if (fDefaultVertexArrayAttribState.count() != attrCount) {
2800 fDefaultVertexArrayAttribState.resize(attrCount); 2815 fDefaultVertexArrayAttribState.resize(attrCount);
2801 } 2816 }
2802 attribState = &fDefaultVertexArrayAttribState; 2817 attribState = &fDefaultVertexArrayAttribState;
2803 } 2818 }
2804 return attribState; 2819 return attribState;
2805 } 2820 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698