| OLD | NEW |
| 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 #include "GrGLGpu.h" | 8 #include "GrGLGpu.h" |
| 9 #include "GrGLBuffer.h" | 9 #include "GrGLBuffer.h" |
| 10 #include "GrGLGLSL.h" | 10 #include "GrGLGLSL.h" |
| (...skipping 368 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 379 1, 0, | 379 1, 0, |
| 380 1, 1 | 380 1, 1 |
| 381 }; | 381 }; |
| 382 GL_ALLOC_CALL(this->glInterface(), | 382 GL_ALLOC_CALL(this->glInterface(), |
| 383 BufferData(GR_GL_ARRAY_BUFFER, | 383 BufferData(GR_GL_ARRAY_BUFFER, |
| 384 (GrGLsizeiptr) sizeof(vdata), | 384 (GrGLsizeiptr) sizeof(vdata), |
| 385 vdata, // data ptr | 385 vdata, // data ptr |
| 386 GR_GL_STATIC_DRAW)); | 386 GR_GL_STATIC_DRAW)); |
| 387 } | 387 } |
| 388 | 388 |
| 389 void GrGLGpu::contextAbandoned() { | 389 void GrGLGpu::disconnect(DisconnectType type) { |
| 390 INHERITED::contextAbandoned(); | 390 INHERITED::disconnect(type); |
| 391 fProgramCache->abandon(); | 391 if (DisconnectType::kCleanup == type) { |
| 392 if (fHWProgramID) { |
| 393 GL_CALL(UseProgram(0)); |
| 394 } |
| 395 if (fTempSrcFBOID) { |
| 396 GL_CALL(DeleteFramebuffers(1, &fTempSrcFBOID)); |
| 397 } |
| 398 if (fTempDstFBOID) { |
| 399 GL_CALL(DeleteFramebuffers(1, &fTempDstFBOID)); |
| 400 } |
| 401 if (fStencilClearFBOID) { |
| 402 GL_CALL(DeleteFramebuffers(1, &fStencilClearFBOID)); |
| 403 } |
| 404 if (fCopyProgramArrayBuffer) { |
| 405 GL_CALL(DeleteBuffers(1, &fCopyProgramArrayBuffer)); |
| 406 } |
| 407 for (size_t i = 0; i < SK_ARRAY_COUNT(fCopyPrograms); ++i) { |
| 408 if (fCopyPrograms[i].fProgram) { |
| 409 GL_CALL(DeleteProgram(fCopyPrograms[i].fProgram)); |
| 410 } |
| 411 } |
| 412 if (fWireRectProgram.fProgram) { |
| 413 GL_CALL(DeleteProgram(fWireRectProgram.fProgram)); |
| 414 } |
| 415 if (fWireRectArrayBuffer) { |
| 416 GL_CALL(DeleteBuffers(1, &fWireRectArrayBuffer)); |
| 417 } |
| 418 |
| 419 if (fPLSSetupProgram.fProgram) { |
| 420 GL_CALL(DeleteProgram(fPLSSetupProgram.fProgram)); |
| 421 } |
| 422 if (fPLSSetupProgram.fArrayBuffer) { |
| 423 GL_CALL(DeleteBuffers(1, &fPLSSetupProgram.fArrayBuffer)); |
| 424 } |
| 425 } else { |
| 426 if (fProgramCache) { |
| 427 fProgramCache->abandon(); |
| 428 } |
| 429 } |
| 430 |
| 431 delete fProgramCache; |
| 432 fProgramCache = nullptr; |
| 433 |
| 392 fHWProgramID = 0; | 434 fHWProgramID = 0; |
| 393 fTempSrcFBOID = 0; | 435 fTempSrcFBOID = 0; |
| 394 fTempDstFBOID = 0; | 436 fTempDstFBOID = 0; |
| 395 fStencilClearFBOID = 0; | 437 fStencilClearFBOID = 0; |
| 396 fCopyProgramArrayBuffer = 0; | 438 fCopyProgramArrayBuffer = 0; |
| 397 for (size_t i = 0; i < SK_ARRAY_COUNT(fCopyPrograms); ++i) { | 439 for (size_t i = 0; i < SK_ARRAY_COUNT(fCopyPrograms); ++i) { |
| 398 fCopyPrograms[i].fProgram = 0; | 440 fCopyPrograms[i].fProgram = 0; |
| 399 } | 441 } |
| 400 fWireRectProgram.fProgram = 0; | 442 fWireRectProgram.fProgram = 0; |
| 401 fWireRectArrayBuffer = 0; | 443 fWireRectArrayBuffer = 0; |
| 444 fPLSSetupProgram.fProgram = 0; |
| 445 fPLSSetupProgram.fArrayBuffer = 0; |
| 402 if (this->glCaps().shaderCaps()->pathRenderingSupport()) { | 446 if (this->glCaps().shaderCaps()->pathRenderingSupport()) { |
| 403 this->glPathRendering()->abandonGpuResources(); | 447 this->glPathRendering()->disconnect(type); |
| 404 } | 448 } |
| 405 } | 449 } |
| 406 | 450 |
| 407 /////////////////////////////////////////////////////////////////////////////// | 451 /////////////////////////////////////////////////////////////////////////////// |
| 408 | 452 |
| 409 void GrGLGpu::onResetContext(uint32_t resetBits) { | 453 void GrGLGpu::onResetContext(uint32_t resetBits) { |
| 410 // we don't use the zb at all | 454 // we don't use the zb at all |
| 411 if (resetBits & kMisc_GrGLBackendState) { | 455 if (resetBits & kMisc_GrGLBackendState) { |
| 412 GL_CALL(Disable(GR_GL_DEPTH_TEST)); | 456 GL_CALL(Disable(GR_GL_DEPTH_TEST)); |
| 413 GL_CALL(DepthMask(GR_GL_FALSE)); | 457 GL_CALL(DepthMask(GR_GL_FALSE)); |
| (...skipping 3806 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4220 if (GR_GL_TEXTURE_EXTERNAL == glTexture->target() || | 4264 if (GR_GL_TEXTURE_EXTERNAL == glTexture->target() || |
| 4221 GR_GL_TEXTURE_RECTANGLE == glTexture->target()) { | 4265 GR_GL_TEXTURE_RECTANGLE == glTexture->target()) { |
| 4222 copyParams->fFilter = GrTextureParams::kNone_FilterMode; | 4266 copyParams->fFilter = GrTextureParams::kNone_FilterMode; |
| 4223 copyParams->fWidth = texture->width(); | 4267 copyParams->fWidth = texture->width(); |
| 4224 copyParams->fHeight = texture->height(); | 4268 copyParams->fHeight = texture->height(); |
| 4225 return true; | 4269 return true; |
| 4226 } | 4270 } |
| 4227 } | 4271 } |
| 4228 return false; | 4272 return false; |
| 4229 } | 4273 } |
| OLD | NEW |