| 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 | 8 |
| 9 #include "GrGLGpu.h" | 9 #include "GrGLGpu.h" |
| 10 #include "GrGLGLSL.h" | 10 #include "GrGLGLSL.h" |
| (...skipping 1551 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1562 } | 1562 } |
| 1563 | 1563 |
| 1564 void GrGLGpu::disableScissor() { | 1564 void GrGLGpu::disableScissor() { |
| 1565 if (kNo_TriState != fHWScissorSettings.fEnabled) { | 1565 if (kNo_TriState != fHWScissorSettings.fEnabled) { |
| 1566 GL_CALL(Disable(GR_GL_SCISSOR_TEST)); | 1566 GL_CALL(Disable(GR_GL_SCISSOR_TEST)); |
| 1567 fHWScissorSettings.fEnabled = kNo_TriState; | 1567 fHWScissorSettings.fEnabled = kNo_TriState; |
| 1568 return; | 1568 return; |
| 1569 } | 1569 } |
| 1570 } | 1570 } |
| 1571 | 1571 |
| 1572 void GrGLGpu::onClear(GrRenderTarget* target, const SkIRect* rect, GrColor color
, | 1572 void GrGLGpu::onClear(GrRenderTarget* target, const SkIRect& rect, GrColor color
) { |
| 1573 bool canIgnoreRect) { | |
| 1574 // parent class should never let us get here with no RT | 1573 // parent class should never let us get here with no RT |
| 1575 SkASSERT(target); | 1574 SkASSERT(target); |
| 1576 GrGLRenderTarget* glRT = static_cast<GrGLRenderTarget*>(target); | 1575 GrGLRenderTarget* glRT = static_cast<GrGLRenderTarget*>(target); |
| 1577 | 1576 |
| 1578 if (canIgnoreRect && this->glCaps().fullClearIsFree()) { | 1577 this->flushRenderTarget(glRT, &rect); |
| 1579 rect = NULL; | |
| 1580 } | |
| 1581 | |
| 1582 SkIRect clippedRect; | |
| 1583 if (rect) { | |
| 1584 // flushScissor expects rect to be clipped to the target. | |
| 1585 clippedRect = *rect; | |
| 1586 SkIRect rtRect = SkIRect::MakeWH(target->width(), target->height()); | |
| 1587 if (clippedRect.intersect(rtRect)) { | |
| 1588 rect = &clippedRect; | |
| 1589 } else { | |
| 1590 return; | |
| 1591 } | |
| 1592 } | |
| 1593 | |
| 1594 this->flushRenderTarget(glRT, rect); | |
| 1595 GrScissorState scissorState; | 1578 GrScissorState scissorState; |
| 1596 if (rect) { | 1579 scissorState.set(rect); |
| 1597 scissorState.set(*rect); | |
| 1598 } | |
| 1599 this->flushScissor(scissorState, glRT->getViewport(), glRT->origin()); | 1580 this->flushScissor(scissorState, glRT->getViewport(), glRT->origin()); |
| 1600 | 1581 |
| 1601 GrGLfloat r, g, b, a; | 1582 GrGLfloat r, g, b, a; |
| 1602 static const GrGLfloat scale255 = 1.f / 255.f; | 1583 static const GrGLfloat scale255 = 1.f / 255.f; |
| 1603 a = GrColorUnpackA(color) * scale255; | 1584 a = GrColorUnpackA(color) * scale255; |
| 1604 GrGLfloat scaleRGB = scale255; | 1585 GrGLfloat scaleRGB = scale255; |
| 1605 r = GrColorUnpackR(color) * scaleRGB; | 1586 r = GrColorUnpackR(color) * scaleRGB; |
| 1606 g = GrColorUnpackG(color) * scaleRGB; | 1587 g = GrColorUnpackG(color) * scaleRGB; |
| 1607 b = GrColorUnpackB(color) * scaleRGB; | 1588 b = GrColorUnpackB(color) * scaleRGB; |
| 1608 | 1589 |
| (...skipping 1604 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3213 this->setVertexArrayID(gpu, 0); | 3194 this->setVertexArrayID(gpu, 0); |
| 3214 } | 3195 } |
| 3215 int attrCount = gpu->glCaps().maxVertexAttributes(); | 3196 int attrCount = gpu->glCaps().maxVertexAttributes(); |
| 3216 if (fDefaultVertexArrayAttribState.count() != attrCount) { | 3197 if (fDefaultVertexArrayAttribState.count() != attrCount) { |
| 3217 fDefaultVertexArrayAttribState.resize(attrCount); | 3198 fDefaultVertexArrayAttribState.resize(attrCount); |
| 3218 } | 3199 } |
| 3219 attribState = &fDefaultVertexArrayAttribState; | 3200 attribState = &fDefaultVertexArrayAttribState; |
| 3220 } | 3201 } |
| 3221 return attribState; | 3202 return attribState; |
| 3222 } | 3203 } |
| OLD | NEW |